c# 自定義控件之 ComboBox


winform 自帶的 combobox 無法支持根據輸入文本匹配列表中的項目,需要使用自定義控件。

   public class MyCombobox : ComboBox
    {
        //初始化數據項
        private List<string> originalList = new List<string>();
        public MyCombobox()
        {
            this.TextUpdate += new EventHandler(CmbTextUpdate);
        }
        /// <summary>
        /// 初始化控件的數據
        /// </summary>
        /// <param name="list">數據集合</param>
        public void Init(List<string> list)
        {
            this.originalList = new List<string>();
            foreach (string str in list)
            {
                this.originalList.Add(str);
            }
            this.Items.Clear();
            this.Items.AddRange(this.originalList.ToArray());
        }

        private void CmbTextUpdate(object sender, EventArgs e)
        {
            this.Items.Clear();
            List<string> list = new List<string>();
            list.Add("");
            foreach (var item in originalList)
            {
                if (item.Contains(this.Text))
                {
                    list.Add(item);
                }
            }
            this.Items.AddRange(list.ToArray());
            //設置光標位置,否則光標位置始終保持在第一列,造成輸入關鍵詞的倒序排列
            this.SelectionStart = this.Text.Length;
            //保持鼠標指針原來狀態,有時候鼠標指針會被下拉框覆蓋,所以要進行一次設置。
            Cursor = Cursors.Default;
            this.DroppedDown = true;
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM