Как отключить редактирование элементов в выпадающем списке для c #? - PullRequest
145 голосов
/ 28 февраля 2009

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

Ответы [ 5 ]

279 голосов
/ 28 февраля 2009

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

comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
20 голосов
/ 07 ноября 2012

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

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

private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
      e.Handled = true;
}
2 голосов
/ 25 августа 2015

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

1 голос
/ 17 января 2019

Как упоминалось выше, вы можете изменить "DropDownStyle" на "DropDownList" в свойствах комбинированного списка.

DropDownStyle Property

0 голосов
/ 31 января 2019

Я попробовал 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()
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...