Подтвердить что ты не робот

Как предотвратить ввод вручную в ComboBox в С#

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

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;   

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

4b9b3361

Ответ 1

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

this.comboBoxType.DropDownStyle = ComboBoxStyle.DropDownList;

Ответ 2

Я считаю, что вы хотите установить DropDownStyle в DropDownList.

this.comboBoxType.DropDownStyle = 
    System.Windows.Forms.ComboBoxStyle.DropDownList;

В качестве альтернативы вы можете сделать это из дизайнера WinForms, выбрав элемент управления, перейдя в окно свойств и изменив свойство DropDownStyle на DropDownList.

Ответ 3

Вы можете отменить обработку нажатия клавиши, добавив e.Handled = true к событию Control KeyPress:

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

Ответ 4

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

Ответ 5

Мне нравится сохранять возможность вставлять вещи вручную, но ограничивать выбранные элементы тем, что в списке. Я бы добавил это событие в 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;
}

Ответ 6

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

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

Listbox Consumption guide здесь: С# ListBox

Ответ 8

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

this.yourcomboBoxname.DropDownStyle = ComboBoxStyle.DropDownList;

Ответ 9

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