如何禁用c#中组合框中元素的编辑?

时间:2009-02-28 18:36:34

标签: c# winforms combobox

我在ComboBox中有一些元素(带有C#的WinForms)。我希望他们的内容是静态的,以便用户在运行应用程序时无法更改内部的值。我也不希望用户向ComboBox添加新值

5 个答案:

答案 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)

如上所述,您可以在组合框的属性中将“ DropDownStyle”更改为“ DropDownList”。

DropDownStyle Property

答案 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()