我在ComboBox中有一些元素(带有C#的WinForms)。我希望他们的内容是静态的,以便用户在运行应用程序时无法更改内部的值。我也不希望用户向ComboBox添加新值
答案 0 :(得分:278)
使用ComboStyle属性:
comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
答案 1 :(得分:20)
这是我使用的另一种方法,因为将DropDownSyle
更改为DropDownList
会使其看起来像3D,有时它看起来很丑陋。
您可以通过像这样处理ComboBox的KeyPress
事件来阻止用户输入。
private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
答案 2 :(得分:2)
您可以将属性中的DropDownStyle更改为DropDownList。这不会显示TextBox的过滤器。
答案 3 :(得分:1)
答案 4 :(得分:0)
我尝试了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()