◆C# winform 实现combobox的这样功能,有高手会吗?◆

ChinaOneCup 2012-08-06 10:20:01
刚接触c# winform开发,想用combobox实现这样的功能:
combobox 的DisplayMember、ValueMember分别绑定数据源的Text和ID项
DropDownStyle属性设为DropDown
现在我想实现在combobox 输入内容后,只要输入的内容全部或者部分匹配ID或者Text,combobox 下拉选项只显示符合的选项,并自动选中下拉的第一项
试设了AutoCompleteMode的几个属性,都不能解决问题,不知有什么办法
...全文
467 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
newtee 2012-08-06
  • 打赏
  • 举报
回复
我有个例子(带查询功能的combobox)给你 代码给你
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ComboBoxFind
{
public partial class Frm_Main : Form
{
public Frm_Main()
{
InitializeComponent();
}

private void Frm_Main_Load(object sender, EventArgs e)
{
cbox_Find.Items.Clear();//清空ComboBox集合
cbox_Find.Items.Add("C#编程词典");//向ComboBox集合添加元素
cbox_Find.Items.Add("C#编程宝典");//向ComboBox集合添加元素
cbox_Find.Items.Add("C#视频学");//向ComboBox集合添加元素
cbox_Find.Items.Add("C#范例宝典");//向ComboBox集合添加元素
cbox_Find.Items.Add("C#从入门到精通");//向ComboBox集合添加元素
cbox_Find.Items.Add("C#范例大全");//向ComboBox集合添加元素
}

private void btn_Begin_Click(object sender, EventArgs e)
{
cbox_Find.AutoCompleteMode = //设置自动完成的模式
AutoCompleteMode.SuggestAppend;
cbox_Find.AutoCompleteSource = //设置自动完成字符串的源
AutoCompleteSource.ListItems;
}
}
}
EnForGrass 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

http://www.cnblogs.com/peterzb/archive/2009/05/30/1491923.html
上面不能满足你的功能的话,只有自定义控件
[/Quote]
参考http://www.zhzhzh.com/z/3/nt/jq/2010/0619/19478.html
EnForGrass 2012-08-06
  • 打赏
  • 举报
回复
http://www.cnblogs.com/peterzb/archive/2009/05/30/1491923.html
上面不能满足你的功能的话,只有自定义控件
robake 2012-08-06
  • 打赏
  • 举报
回复
在Combobox的OnFocus事件中启动监视线程,

此线程监视键盘动作(或监视ComboBox输入的值),再比较

报歉,没有具体代码。
ChinaOneCup 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
肯定不能像你这样子处理。

你应该加载后台线程,获取Combobox中输入的值,或是获取键盘值,传入到线程中,然后与combobox里的值进行比较,选中。
[/Quote]

新手,有具体的代码么
ChinaOneCup 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
combobox 应该是绑定了datasources的吧?
在combobox ontextChanged事件里面根据输入的内容从combobox 绑定的数据源中选择符合要求的行添加到combobox 上,提供大概的思路,在这边其实拼音首字母检索什么都可以这么做

C# code


private void comboBox1_TextChanged(object sender, ……
[/Quote]

其实我一开始也是这样使用,会出现很多别的意想不到的情况,很不好控制,最后放弃了,不知还有什么好办法
chinnsyuutou 2012-08-06
  • 打赏
  • 举报
回复
combobox 应该是绑定了datasources的吧?
在combobox ontextChanged事件里面根据输入的内容从combobox 绑定的数据源中选择符合要求的行添加到combobox 上,提供大概的思路,在这边其实拼音首字母检索什么都可以这么做

private void comboBox1_TextChanged(object sender, EventArgs e)
{
DataTable dt = new DataTable();//假设这个是comboBox1初始绑定时的数据
string str = comboBox1.Text;
DataRow[] drResult = dt.Select("CloumnName like '" + str + "%'");
//drResult 的数据就是你要重新绑定到comboBox1的数据,将他重新绑定就可以了

}
robake 2012-08-06
  • 打赏
  • 举报
回复
肯定不能像你这样子处理。

你应该加载后台线程,获取Combobox中输入的值,或是获取键盘值,传入到线程中,然后与combobox里的值进行比较,选中。
ChinaOneCup 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
我有个例子(带查询功能的combobox)给你 代码给你

C# code

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.T……
[/Quote]

但不能实现在combobox 输入内容后,只要输入的内容全部或者部分匹配ID或者Text,combobox 下拉选项就可以只显示符合的选项
ChinaOneCup 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
这个就是属于控件的联动
[/Quote]
只有一个combobox
decoct 2012-08-06
  • 打赏
  • 举报
回复
+1。我也是用这个实现的,不知道是不是楼主要的[Quote=引用 8 楼 的回复:]

我有个例子(带查询功能的combobox)给你 代码给你C# code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using ……
[/Quote]
saturn4263195 2012-08-06
  • 打赏
  • 举报
回复
一个办法,最原始有效的,struct...
zhanglong19891129 2012-08-06
  • 打赏
  • 举报
回复
这个就是属于控件的联动
zhanglong19891129 2012-08-06
  • 打赏
  • 举报
回复
楼至的意思是不是这样的了??根据第一个conbox的值来初始话后面combox的值?????
如果是这样的话,你就在第一个combox中实现动态绑定第二个combox 例如根据第一个combox的某个事件中添加以下的代码:根据第一个combox选择的ID.然后自己写了个datatable,这个datatable是根据ID的值取出来的..然后把它绑定到第二个combox就得了

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧