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

229
我希望有一个“仅选择”ComboBox,为用户提供可选择的项目列表。在ComboBox控件的文本部分中应禁用输入。
我最初通过谷歌搜索得到了一个过于复杂、错误的建议,即捕获KeyPress事件。
7个回答

425

为了使ComboBox的文本部分不可编辑,请将DropDownStyle属性设置为"DropDownList"。现在,ComboBox对用户来说基本上是只能选择的。您可以在Visual Studio设计器中或使用C#代码完成此操作:

stateComboBox.DropDownStyle = ComboBoxStyle.DropDownList;

在 MSDN 上查看 ComboBox DropDownStyle 属性 的文档链接。


8
需要记住的一件事是,这样做意味着您不能再以编程方式更新“Text”属性,而是要使用“ComboBox.SelectedIndex = -1;”来显示默认消息。 - user692942
有没有一种方法可以通过Visual C#的GUI来完成这个操作,而不必在代码中进行编辑?似乎设置“默认值”是一个常见的需求。 - muzzlator
7
我应该如何避免出现灰色外观? - Anders Lindén
3
请将属性 FlatStyle 设置为 Flat。 - Xam
@AndersLindén 是的,如果你不喜欢扁平风格的默认外观,那么唯一的解决方案就是自己绘制 ComboBox。 - Xam
显示剩余4条评论

76

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

enter image description here

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

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

33

在属性窗口中,保持选择ComboBox控件并搜索DropDropStyle属性,然后选择DropDownList


4

Before

enter image description here

Method1

enter image description here

Method2

cmb_type.DropDownStyle=ComboBoxStyle.DropDownList

之后

在此输入图片描述


2
COMBOBOXID.DropDownStyle = ComboBoxStyle.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;
}

必须指出:C#代码无法编译 - Private 必须全部小写,即 private - dimitar.bogdanov

0

对于winforms .NET,从Combobox属性更改DropDownStyle为DropDownList


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接