我在visual studio中有一个组合框的特定问题。 我使用它让用户在组合框的文本框部分键入文本,这会立即启动SQL请求。 结果应显示在组合框的下拉列表部分中。 (DropDownStyle设置为DropDown)
private void UpdateParent(object sender, EventArgs e)
{
ParentListChange(); //Update the listitems
//prevent from opening at the beginning
if (!ParentSelect.Text.Trim().Equals(""))
{
//my problem
ParentSelect.DroppedDown = true;
Cursor.Current = Cursors.Default;
}
}
但是,只要下拉列表打开,第一个项目就会被选中,并且它的整个文本将粘贴到文本框中。 因此,如果你开始连续写一个字母,那么第一个字母就会消失,而#34;就会消失。因为第二个打字的字母会替换所选的文字。
我知道有一个类似的帖子,但是答案没有帮助,因为它们会变慢(用户必须等待大约一秒才打字):
private void comboBox1_TextUpdate(object sender, EventArgs e)
{
var savedText = comboBox1.Text;
comboBox1.DroppedDown = true;
comboBox1.Text = savedText;
comboBox1.Select(savedText.Length, 0);
}
或者不打算打开下拉列表,这是必不可少的:
comboBox1.DropDownStyle = ComboBoxStyle.DropDown;
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
有没有办法只禁用"选择第一项"事?
答案 0 :(得分:0)
实现的一种方法是custom user control
。
您可以TextBox
重叠ComboBox
。
因此,用户只会与文本框进行交互,并且根据TextBox
中输入的文本(使用适当的事件 - 按键会很好),您可以在数据库中查询并加载ComboBox
查询结果。