2008-09-17 8 views
179

Я хочу иметь только «select-only» ComboBox, который предоставляет список элементов для выбора пользователем. В текстовой части элемента управления ComboBox необходимо отключить ввод текста.Как сделать ComboBox недоступным для редактирования в .NET?

Моя первоначальная ошибка в этом оказалось слишком сложным, ошибочным предложением захватить событие KeyPress.

ответ

330

Чтобы сделать текстовую часть ComboBox недоступной для редактирования, установите для свойства DropDownStyle значение «DropDownList». ComboBox теперь по сути выбирается только для пользователя. Вы можете сделать это в конструкторе Visual Studio, или в C# как это:

stateComboBox.DropDownStyle = ComboBoxStyle.DropDownList; 

Ссылка на документацию для ComboBox DropDownStyle property на MSDN.

+6

Одна вещь, чтобы иметь в виду, делая это не означает, что вы больше не можете обновить `свойство Text` programmically, использовал его, чтобы показать сообщение по умолчанию с помощью `ComboBox.SelectedIndex = -1;` – Lankymart 2012-11-20 15:55:33

19

Оставайтесь на своем ComboBox и найдите свойство DropDropStyle в окне свойств, а затем выберите DropDownList.

51

Чтобы добавить визуальный контакт с ориентирами Студия графического интерфейса, вы можете найти DropDownStyle параметры в свойствах выбранного ComboBox:

enter image description here

, который будет автоматически добавить строку, указанную в первом ответе на форму. designer.cs InitializeComponent(), например, так:

this.comboBoxBatch.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
2

COMBOBOXID.DropDownStyle = ComboBoxStyle.DropDownList;

1

Для продолжения отображения данных на входе после выбора, сделайте так:

VB.NET 
Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress 
    e.Handled = True 
End Sub 



C# 
Private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    e.Handled = true; 
}