Ответ 1
Просто установите комбо как DropDownList:
this.comboBoxType.DropDownStyle = ComboBoxStyle.DropDownList;
У меня есть форма в С#, которая использует 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 был единственным вариантом.
Просто установите комбо как DropDownList:
this.comboBoxType.DropDownStyle = ComboBoxStyle.DropDownList;
Я считаю, что вы хотите установить DropDownStyle в DropDownList.
this.comboBoxType.DropDownStyle =
System.Windows.Forms.ComboBoxStyle.DropDownList;
В качестве альтернативы вы можете сделать это из дизайнера WinForms, выбрав элемент управления, перейдя в окно свойств и изменив свойство DropDownStyle на DropDownList.
Вы можете отменить обработку нажатия клавиши, добавив e.Handled = true
к событию Control KeyPress:
private void Combo1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
В окне свойств элемента управления сделайте DropDownStyle равным DropDownList.
Мне нравится сохранять возможность вставлять вещи вручную, но ограничивать выбранные элементы тем, что в списке. Я бы добавил это событие в 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;
}
Зачем использовать ComboBox?
С# имеет элемент управления Listbox. Технически разница в ComboBox в Listbox заключается в том, что ComboBox может получать ввод, поэтому, если это не тот контроль, который вам нужен, я предлагаю вам использовать ListBox
Listbox Consumption guide здесь: С# ListBox
Просто установите свойство DropDownStyle в DropDownList Посмотрите это изображение Пример
Это блокирует ручной ввод Combobox и отображает только элементы списка comboboxlist
this.yourcomboBoxname.DropDownStyle = ComboBoxStyle.DropDownList;
private void cmbDatesShipment_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}