【发布时间】:2010-10-10 13:14:48
【问题描述】:
我在 ComboBox 中有一些元素(带有 C# 的 WinForms)。我希望他们的内容是静态的,以便用户在运行应用程序时无法更改其中的值。我也不希望用户向 ComboBox 添加新值
【问题讨论】:
我在 ComboBox 中有一些元素(带有 C# 的 WinForms)。我希望他们的内容是静态的,以便用户在运行应用程序时无法更改其中的值。我也不希望用户向 ComboBox 添加新值
【问题讨论】:
使用 ComboStyle 属性:
comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
【讨论】:
combo.Properties.TextEditStyle = DisableTextEditor
这是我使用的另一种方法,因为将 DropDownSyle 更改为 DropDownList 使它看起来像 3D,有时它只是丑陋的。
您可以通过像这样处理 ComboBox 的 KeyPress 事件来阻止用户输入。
private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
【讨论】:
Paste。我不知道现在怎么样。
Paste,您必须创建假的空上下文菜单并将其分配给组合框。
您可以将属性中的 DropDownStyle 更改为 DropDownList。这不会显示过滤器的文本框。
(截图由FUSION CHA0S提供。)
【讨论】:
我试过 ComboBox1_KeyPress 但它允许删除字符&你也可以使用复制粘贴命令。我的 DropDownStyle 设置为 DropDownList 但仍然没有用。所以我做了以下步骤来避免组合框文本编辑。
下面的代码处理删除和退格键。并且还禁用与控制键的组合(例如 ctr+C 或 ctr+X)
Private Sub CmbxInType_KeyDown(sender As Object, e As KeyEventArgs) Handles CmbxInType.KeyDown
If e.KeyCode = Keys.Delete Or e.KeyCode = Keys.Back Then
e.SuppressKeyPress = True
End If
If Not (e.Control AndAlso e.KeyCode = Keys.C) Then
e.SuppressKeyPress = True
End If
End Sub
在表单加载中使用下面的行来禁用右键单击组合框 控制以避免通过鼠标单击进行剪切/粘贴。
CmbxInType.ContextMenu = new ContextMenu()
【讨论】: