先上代码:
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DropDownStyle = ComboBoxStyle.DropDown;
comboBox1.Items.Add("abc");
comboBox1.Items.Add("bcd");
comboBox1.Items.Add("cde");
}
private void comboBox1_TextUpdate(object sender, EventArgs e)
{
string text = comboBox1.Text;
if (!comboBox1.DroppedDown)
{
comboBox1.DroppedDown = true;
}
//防止微软的bug
comboBox1.Text = text;
Cursor.Current = Cursors.Default;
SendKeys.Send("{END}");
}
问题:当输入a并且comboBox1下拉列表闭合时,comboBox1会自动选中项”abc“,comboBox1的Text也变为abc;当输入b并且comboBox1下拉列表闭合时,comboBox1会自动选中项”bcd“,comboBox1的Text也变为bcd;
需求: 我想不让comboBox1自动选择匹配到的第一项,比如例子中输入a并且comboBox1下拉列表闭合时,comboBox1不要选中项”abc“,就展示为”a“,只有当用户鼠标选择下拉列表中的项时才展示选中的项;还有就是TextUpdate事件触发时,下拉列表必须为打开状态。
我试了很多,认为这是微软ComboBox内置的这种功能,不知道怎样能实现我需要的功能,希望高手解答。
------解决思路----------------------
的确是不好用,我是自己做的组合控件,
可以用一个ListBox,放在ComboBox下面,这样好控制,ComboBox里面不要内容,放在ListBox里面,ComboBox也可以换成textbox
------解决思路----------------------
这个不是微软内置的功能。自带的Combox实现不了你的要求。只能自己写用户控件了。
------解决思路----------------------
这个很简单啊!分两部分,1.取值,2.显示
public string selected = "";
private void comboBox1_DropDownClosed(object sender, EventArgs e)
{
ComboBox comb = (ComboBox)sender;
comb.Text = selected;
}
private void comboBox1_TextChanged(object sender, EventArgs e)
{
ComboBox comb = (ComboBox)sender;
selected = comb.Text;
}