c# ComboBox 防止下拉后选择项目
c# ComboBox prevent selecting item after dropdown
我对 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;
}
}
但是一旦打开下拉菜单,第一个项目就会被选中,整个文本将粘贴到文本框中。
因此,如果您开始连续写多于一个字母,则第一个 "disappears" 因为第二个键入的字母会替换所选文本。
我知道有一个类似的 post 但答案没有帮助,因为它们会很慢(用户必须等待大约一秒钟才能输入):
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;
有没有办法只禁用 "select first item" 东西?
实现的一种方法是custom user control
。
您可以 TextBox
重叠您的 ComboBox
。
因此,用户将仅与文本框交互,根据在 TextBox
中输入的文本(使用适当的事件 - 按键就可以),您可以在数据库中查询并加载 ComboBox
查询结果。
我对 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;
}
}
但是一旦打开下拉菜单,第一个项目就会被选中,整个文本将粘贴到文本框中。 因此,如果您开始连续写多于一个字母,则第一个 "disappears" 因为第二个键入的字母会替换所选文本。
我知道有一个类似的 post 但答案没有帮助,因为它们会很慢(用户必须等待大约一秒钟才能输入):
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;
有没有办法只禁用 "select first item" 东西?
实现的一种方法是custom user control
。
您可以 TextBox
重叠您的 ComboBox
。
因此,用户将仅与文本框交互,根据在 TextBox
中输入的文本(使用适当的事件 - 按键就可以),您可以在数据库中查询并加载 ComboBox
查询结果。