c#ComboBox防止在下拉菜单后选择项目

问题描述:

我在Visual Studio中有一个组合框的特定问题。 我使用它来让用户在立即启动SQL请求的组合框的文本框部分输入文本。 结果应显示在组合框的下拉列表部分。 (DropDownStyle设置为下拉)c#ComboBox防止在下拉菜单后选择项目

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; 
      } 
     } 

但只要下拉打开的第一个项目被选中和它的整个文本将粘贴到文本框中。 因此,如果您开始在一行中多写一个字母,第一个字母会“消失”,因为第二个字母会替代所选文字。

我知道有一个类似的帖子,但answeres没有帮助,因为他们将很慢(用户将不得不等待大约一秒钟的键入):

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; 

有没有办法只是禁用“选择第一项”的东西?

+1

你的问题是什么? WPF? UWP?的WinForms? Web窗体? Xamarin?还有别的吗?使用标签! – taffer

+0

看看这里:http://*.com/questions/11445125/disabling-particular-items-in-a-combobox – Niklas

+0

你的DropDownList在哪里?你的TextBox在哪里?您的代码中唯一可见的控件是组合框。请尽量更精确地描述您的问题。 – Sabuncu

实现的一种方法是拥有custom user control

你可以有一个TextBox重叠你的ComboBox

因此,用户将只有文本框来进行交互,并按照在TextBox输入的文本(使用适当的事件 - 按键将被罚款),您可以在数据库和负载ComboBox与查询结果查询。

+0

不是很好的方式,但它有帮助。更好的是写我自己的盒子,谢谢。 – Luy

+0

事实上,自定义用户控件始终是计划B.但是,很高兴这有助于 – Amit