comboBox输入自动提示 自动关联(仿ie地址栏)C#

32 篇文章 0 订阅
26 篇文章 0 订阅
最近在做项目的时候,需要使用comboBox实现类似ie下拉列表一样的功能!最直接的思路是监听comboBox的textChanged事件,当事件发生时,从数据(我是用arrayList暂存数据的)中匹配出符合的字符串,然后添加到comboBox的下拉列表中。

1:如何在textChanged显示下拉列表,因为显示下拉列表一般是用户点击下拉的箭头显示的,后来使用 comboBox1.DroppedDown = true; 可以显示下拉列表的内容。

2:向下拉列表添加内容: comboBox1.Items.Add(str); 使用此语句可以添加str到下拉列表中

3:删除下拉列表的内容?因为当comboBox的text改变时,原来匹配的下来列表中的内容可能不再匹配,这样我的思路是每次text改变时将下拉列表内容全部删除,然后再重新遍历集合,将匹配的内容重新添加到下拉列表里: comboBox1.Items.Clear(); 可是这个语句会出现一个问题,就是text中的光标会自动跑到最左端:这样,这条思路没有继续下去,而且发现这样实现有时候鼠标会丢失光标,感觉很不好!

4:后来查到comboBox和textBox支持内置的搜索提示功能,在form的InitializeComponent()中添加如下语句:
this.comboBox1.AutoCompleteCustomSource.AddRange(new string[] { "10.152.154.89", "10.152.154.90", "10.152.252.10", "10.152.252.11" });
this.comboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; 
this.comboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;
其中this.comboBox1.AutoCompleteCustomSource.AddRange(new string[] { "10.152.154.89", "10.152.154.90", "10.152.252.10", "10.152.252.11" });是将数据添加到搜索范围
this.comboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; 
是设定comboBox完成内置的搜索,默认是None,还有Append,和SuggestAppend属性,除了默认的None都可以实现搜索提示的功能,只是外观有所不同而已
this.comboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;制定搜索范围,由于在此我是选用new string[] { "10.152.154.89", "10.152.154.90", "10.152.252.10", "10.152.252.11" }作为自己的搜索范围,所以定义为CustomSource
System.Windows.Forms.AutoCompleteSource还有个Allurl属性,如果将代码改为
this.comboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; this.comboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.Allurl;
这样该comboBox可以实现同ie下拉列表一样的功能,其他的属性如AllSystemSources可以自己尝试,这样就完成了comboBox的搜索提示功能。  




  DataTable dt=downbl.ReturnIDCardTb();
            cbCardNum.DataSource = dt;
            cbCardNum.DisplayMember = "CardNO";
            cbCardNum.SelectedIndex = -1;
             List<string> lt=new List<string>();
            for(int i=0;i<dt.Rows.Count;i++)
            {
                lt.Add(dt.Rows[i][0].ToString());
            }

            cbCardNum.AutoCompleteCustomSource.AddRange(lt.ToArray());
            this.cbCardNum.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
            this.cbCardNum.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值