2009-02-10 2 views
4

У меня есть контроль COMBOBOX на моей форме (WinForms, .NET 3.5), и его DropDownStyle свойство установлено в Simple. Предположим, что оно заполнено буквами алфавита, так как строка объектов («a», «b», «c» и т. Д.).
Когда я ввожу букву в поле ввода combobox, правильный элемент будет отображаться чуть ниже.C# выпадающий (Dropdownstyle = Simple) - как выбрать элемент, как вы типа

Это поведение, которое я хочу. Но я также хотел бы, чтобы был выбран первый соответствующий элемент.

Есть ли свойство элемента управления Combobox, которое бы достигло этого? Или мне нужно обрабатывать это программно?

ответ

2

В зависимости от ваших потребностей, вы можете рассмотреть возможность использования элемента управления TextBox и настройка свойств автозаполнения (например, AutoCompleteMode и AutoCompleteCustomSource)

Трудность, которую вы будете сталкиваться в том, что когда вы выбираете пункт (программно) , текст в поле со списком изменится. Так что делать что-то вроде этого:

private void comboBox1_TextChanged(object sender, EventArgs e) 
{ 
    for(int i=0; i<comboBox1.Items.Count; i++) 
    { 
     if (comboBox1.Items[i].ToString().StartsWith(comboBox1.Text)) 
     { 
      comboBox1.SelectedIndex = i; 
      return; 
     } 
    } 
} 

может выполнить то, что вы хотите (с точки зрения выбора), но он также будет немедленно изменить текст пользователя.

+0

Я надеялся на «более легкое» решение и ожидал ответа других людей, но, похоже, мне придется сделать это «жестким» способом:/ Спасибо за ваше предложенное решение! – Fueled

+0

Ну, я делаю TextBox с автозаполнением; это «легкий» способ для меня ... но я не думаю, что это вполне соответствует вашим потребностям. –

Смежные вопросы