Как предотвратить ручной ввод в ComboBox в C # - PullRequest
40 голосов
/ 10 марта 2012

У меня есть форма в C #, которая использует ComboBox.Как запретить пользователю вручную вводить текст в ComboBox в C #?

this.comboBoxType.Font = new System.Drawing.Font("Arial", 15.75F);
this.comboBoxType.FormattingEnabled = true;
this.comboBoxType.Items.AddRange(new object[] {
            "a",
            "b",
            "c"});
this.comboBoxType.Location = new System.Drawing.Point(742, 364);
this.comboBoxType.Name = "comboBoxType";
this.comboBoxType.Size = new System.Drawing.Size(89, 32);
this.comboBoxType.TabIndex = 57;   

Я хочу, чтобы ABC был единственным вариантом.

Ответы [ 9 ]

119 голосов
/ 10 марта 2012

Просто установите комбо как DropDownList:

this.comboBoxType.DropDownStyle = ComboBoxStyle.DropDownList;
14 голосов
/ 10 марта 2012

Полагаю, вы хотите установить DropDownStyle в DropDownList.

this.comboBoxType.DropDownStyle = 
    System.Windows.Forms.ComboBoxStyle.DropDownList;
7 голосов
/ 24 августа 2015

Из окна свойств для элемента управления установите DropDownStyle равным DropDownList .

7 голосов
/ 26 ноября 2012

Вы можете добавить e.Handled = true в событие KeyPress:

private void Combo1_KeyPress(object sender, KeyPressEventArgs e)
    {
        e.Handled = true;
    }
1 голос
/ 17 июля 2018

Мне нравится сохранять возможность вставлять вещи вручную, но ограничивать выбранные элементы тем, что находится в списке.Я бы добавил это событие в ComboBox.Пока вы получаете SelectedItem, а не Text, вы получаете правильные предопределенные элементы;а, б и в.

private void cbx_LostFocus(object sender, EventArgs e)
{
  if (!(sender is ComboBox cbx)) return;
  int i;
  cbx.SelectedIndex = (i = cbx.FindString(cbx.Text)) >= 0 ? i : 0;
}
1 голос
/ 15 сентября 2017

Просто установите для свойства DropDownStyle значение DropDownList Посмотрите эту картинку Пример

1 голос
/ 09 марта 2015

Зачем тогда использовать ComboBox?

C # имеет элемент управления, называемый Listbox . Технически, отличие ComboBox от Listbox состоит в том, что ComboBox может получать входные данные, поэтому, если вам не нужен элемент управления, я предлагаю использовать ListBox

Listbox Руководство по потреблению здесь: C # ListBox

0 голосов
/ 19 апреля 2016

Блокирует ручной ввод в Combobox и отображает только элементы списка Comboboxlist

this.yourcomboBoxname.DropDownStyle = ComboBoxStyle.DropDownList;
0 голосов
/ 11 июля 2013
private void cmbDatesShipment_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...