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

157

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

Mobin
источник

Ответы:

300

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

comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
Дэн Уокер
источник
38
Это также можно установить в окне свойств дизайнера.
Джеффри
3
С последними версиями вы можете использоватьcombo.Properties.TextEditStyle = DisableTextEditor
Keysharpener
21

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

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

private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
      e.Handled = true;
}
Isuru
источник
4
Вы можете изменить его внешний вид в конструкторе FlatStyle :)
StinkyCat
3
@StinkyCat Это не меняет внешний вид всплывающего списка, только элемент управления в форме.
Logarr
Вы должны обрабатывать меню правой кнопкой мыши, где у вас есть вариант Pasteтоже. Я понятия не имею, как сейчас.
Синатр
3
Хорошо, чтобы удалить, Pasteвам нужно создать поддельное пустое контекстное меню и назначить его ComboBox.
Синатр
7

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

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

Сумит Агравал
источник
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()
Сушил Джадхав
источник