真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Combobox控件實現(xiàn)漢字按拼音首字母檢索-創(chuàng)新互聯(lián)

Combobox控件在開發(fā)中作為下拉選項的不二之選,用的非常頻繁,前幾日開發(fā)過程中剛好有個需求有用到這個控件,而且客戶要求增加下拉選擇功能,這個簡單,設(shè)置控件的自動完成屬性后就解決了

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名與空間、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、下花園網(wǎng)站維護、網(wǎng)站推廣。
this.comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;//設(shè)置自動完成的源 
this.comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;//設(shè)置自動完成的的形式

發(fā)現(xiàn)場讓客戶使用,客戶表示功能實現(xiàn)和他需求不一致,后來解釋是想通過下拉選項的拼音碼進行檢索,查遍的很多資料,也走了很多彎路,最后終于實現(xiàn),將正確的實現(xiàn)方法記錄在此

首先根據(jù)Combobox控件拼音碼檢索搜索到了這篇文章(http://www.cnblogs.com/eshizhan/archive/2012/08/13/2637207.html),集成到項目中進行測試時發(fā)現(xiàn),輸入檢索的內(nèi)容后,敲擊回車鍵,輸入的內(nèi)容沒有全部顯示到文本框中,輸入三個字母時,只顯示一個或者兩個,再次檢索時候恢復(fù)正常

如果檢索時,把鼠標指針從控件上移動到別的控件上,輸入檢索內(nèi)容敲擊回車鍵后,會出現(xiàn)丟失鼠標指針的情況,這時只有把鼠標往下移動到任務(wù)欄指針才會出現(xiàn)

以上問題測試均使用搜狗輸入法中文狀態(tài)

網(wǎng)上并沒有找到針對這兩個問題的解決方案,繼續(xù)搜索拼音碼檢索,查找不同的方案,經(jīng)過對多個方案的反復(fù)測試,終于發(fā)現(xiàn)了一個可用的方案,重寫了ComboBox控件,以下為示例代碼

    public class ComboBoxEx : System.Windows.Forms.ComboBox
    {
        public ComboBoxEx()
        {
            this.FormattingEnabled = true;
        }
        List _ChineseCharacterList;
        private string[] _TextList;
        public string[] TextList
        {
            get { return _TextList; }
            set
            {
                _TextList = value;
                _ChineseCharacterList = GetChineseCharacterList(value);
            }
        }
        /// 
        /// 把中文字符集合轉(zhuǎn)為中文字符對象集合
        /// 
        private List GetChineseCharacterList(string[] chnTextList)
        {
            List lst = new List();
            foreach (string s in chnTextList)
            {
                ChineseCharacter cc = new ChineseCharacter(s);
                lst.Add(cc);
            }
            return lst;
        }
        protected override void OnTextUpdate(EventArgs e)
        {
            if (_ChineseCharacterList != null && _ChineseCharacterList.Count > 0)
            {
                //var input = this.Text.Trim().ToUpper();
                string input = this.Text.Trim().ToUpper();
                this.Items.Clear();
                if (string.IsNullOrEmpty(input))
                {
                    this.Items.AddRange(_ChineseCharacterList.ToArray());
                }
                else
                {
                    var newList = _ChineseCharacterList.FindAll(c => c.FirstPinYin.Contains(input) || c.ChineseText.Contains(input));
                    if (newList.Count == 0)
                    {
                        newList.Add(new ChineseCharacter("未找到"));
                    }
                    this.Items.AddRange(newList.ToArray());
                }
                this.DisplayMember = "ChineseText";
                this.ValueMember = "FirstPinYin";
                this.Select(this.Text.Length, 0);
                this.DroppedDown = true;
                //保持鼠標指針形狀  
                Cursor = Cursors.Default;
            }
            base.OnTextUpdate(e);
        }
        protected override void OnEnter(EventArgs e)
        {
            this.Items.AddRange(_ChineseCharacterList.ToArray());
            this.DisplayMember = "ChineseText";
            this.ValueMember = "FirstPinYin";
            base.OnEnter(e);
        }
        protected override void OnLeave(EventArgs e)
        {
            this.Items.Clear();
            base.OnLeave(e);
        }
    }
    /// 
    /// 中文字符
    /// 
    public class ChineseCharacter
    {
        public ChineseCharacter(string chnText)
        {
            ChineseText = chnText;
            FirstPinYin =JHNISCommonLib.JHNISCommonManage.GetInstance().JianPin(chnText);
        }
        public string ChineseText { get; set; }
        public string FirstPinYin { get; set; }
    }

第二種方案,使用搜索輸入法輸入漢字,敲擊回車鍵后,輸入的內(nèi)容沒有全部顯示到Combobox控件上,如下圖所示(輸入“瀏覽器”,只顯示了“覽器”):

Combobox控件實現(xiàn)漢字按拼音首字母檢索

經(jīng)測試當把下拉列表顯示出來再進行檢索時,內(nèi)容顯示正常,可通過以下代碼進行設(shè)置

        protected override void OnGotFocus(EventArgs e)
        {
            this.DroppedDown = true;
            base.OnGotFocus(e);
        }
        protected override void OnLostFocus(EventArgs e)
        {
            this.DroppedDown = false;
            base.OnLostFocus(e);
        }

第二種方案原文地址:http://download.csdn.net/detail/xbl002/9408842#comment

附件:http://down.51cto.com/data/2368281

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。


文章名稱:Combobox控件實現(xiàn)漢字按拼音首字母檢索-創(chuàng)新互聯(lián)
文章源于:http://weahome.cn/article/ddgcod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部