• 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;
            }
        }
  • 相关阅读:
    牛客练习赛53 B题调和级数
    装备购买(线性基)
    杨氏矩阵与勾长公式
    南昌邀请赛B题(拉格朗日插值)
    徐州网络赛补题
    __int128 输入输出模板
    51 nod1067 Bash游戏 V2(sg函数打表)
    堆优化的dijkstra算法
    ST表求区间最值
    Tree Reconstruction
  • 原文地址:https://www.cnblogs.com/aitong/p/11052054.html
Copyright © 2020-2023  润新知