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

Posted

技术标签:

【中文标题】如何使 ComboBox 在 .NET 中不可编辑?【英文标题】:How can I make a ComboBox non-editable in .NET? 【发布时间】:2010-09-10 06:51:28 【问题描述】:

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

我最初的谷歌搜索发现了一个过于复杂、误导性的建议来捕获KeyPress 事件。

【问题讨论】:

【参考方案1】:

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

stateComboBox.DropDownStyle = ComboBoxStyle.DropDownList;

链接到 MSDN 上 ComboBox DropDownStyle property 的文档。

【讨论】:

要记住这样做意味着您不能再以编程方式更新 Text 属性,而是使用它来显示使用 ComboBox.SelectedIndex = -1; 的默认消息 有没有办法通过 Visual C# 的 GUI 执行此操作,而无需在代码中进行编辑?似乎要设置“默认值”是很正常的事情 如何避免出现灰色? @AndersLindén 将 FlatStyle 属性设置为 Flat。 @Xam 那么边界去哪儿了?用谷歌搜索一下,似乎我必须自己做图才能让它看起来可以接受。【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:
COMBOBOXID.DropDownStyle = ComboBoxStyle.DropDownList;

【讨论】:

【参考方案5】:

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

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【参考方案6】:

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

【讨论】:

以上是关于如何使 ComboBox 在 .NET 中不可编辑?的主要内容,如果未能解决你的问题,请参考以下文章

MFC 组合框不可编辑

如何在 JavaFx 的可编辑 ComboBox 中获取输入值?

EasyUI combobox 与 numberbox 属性不可编辑与设置值的使用

如何使嵌套元素在可拖动容器中不可拖动?

如何令comboBox不能输入,只能选择

c# WPF listview里有一列的内容是combobox,combobox的初始状态是不可用,通过一个编辑点击使combo变可用