Как отключить редактирование элементов в combobox для c #?

У меня есть некоторые элементы в ComboBox (WinForms с C#). Я хочу, чтобы их содержимое было статическим, чтобы пользователь не мог изменять значения внутри при запуске приложения. Я также не хочу, чтобы пользователь добавлял новые значения в ComboBox.

Ответов (4)

Решение

Используйте свойство ComboStyle:

comboBox.DropDownStyle = ComboBoxStyle.DropDownList;

Это еще один метод, который я использую, потому что изменение DropDownSyle на DropDownList делает его трехмерным, а иногда и просто уродливым.

Вы можете предотвратить ввод данных пользователем, обработав KeyPress событие ComboBox следующим образом.

private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
      e.Handled = true;
}

Я пробовал 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
    
  • При загрузке формы используйте строку ниже, чтобы отключить щелчок правой кнопкой мыши на элементе управления combobox, чтобы избежать вырезания / вставки щелчком мыши.

    CmbxInType.ContextMenu = new ContextMenu()
    

Вы можете изменить DropDownStyle в свойствах на DropDownList. Это не будет отображать текстовое поле для фильтра.

DropDownStyle Свойство
(Снимок экрана предоставлен FUSION CHA0S .)