如何使ComboBox在.NET中不可编辑?


205

我希望有一个“仅选择” ComboBox,它提供项目列表供用户选择。ComboBox控件的文本部分中应禁用键入。

我最初对此进行了搜索,结果发现了一个过于复杂,误导性的建议来捕获KeyPress事件。

Answers:


378

若要使ComboBox的文本部分不可编辑,请将DropDownStyle属性设置为“ DropDownList”。现在,ComboBox基本上只为用户选择。您可以在Visual Studio设计器或C#中执行以下操作:

stateComboBox.DropDownStyle = ComboBoxStyle.DropDownList;

链接到MSDN上ComboBox DropDownStyle属性的文档。


8
需要记住的一件事是,您无法再通过Text编程方式更新属性,而是使用它来显示默认消息,该属性为ComboBox.SelectedIndex = -1;
Lankymart 2012年

有没有一种方法可以通过Visual C#的GUI进行操作,而不必在代码中对其进行编辑?似乎需要设置“默认值”是很正常的事情
助推器

6
如何避免出现灰色外观?
安德斯·林登

2
@AndersLindén将属性FlatStyle设置为Flat。
Xam

@Xam那么边界到哪里去了?谷歌搜索时,似乎我必须自己绘制图纸,以使其看起来可以接受。
安德斯·林登

67

若要添加Visual Studio GUI引用,可以DropDownStyle在所选ComboBox的“属性”下找到选项:

在此处输入图片说明

它将自动将第一个答案中提到的行添加到Form.Designer.cs中InitializeComponent(),如下所示:

this.comboBoxBatch.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;

33

停留在ComboBox上,从属性窗口中搜索DropDropStyle属性,然后选择DropDownList



1

要在选择后继续在输入中显示数据,请执行以下操作:

VB.NET
Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress
    e.Handled = True
End Sub



C#
Private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = true;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.