2017-01-17 4 views
0

У меня есть конкретная проблема с combobox в visual studio. Я использую его, чтобы пользователь мог вводить текст в текстовое поле в поле со списком, которое сразу же запускает SQL-запрос. Результат должен отображаться в выпадающем списке части выпадающего списка. (DropDownStyle установлен в DropDown)C# ComboBox предотвратить выбор элемента после выпадающего списка

private void UpdateParent(object sender, EventArgs e) 
     { 
      ParentListChange(); //Update the listitems 

      //prevent from opening at the beginning 
      if (!ParentSelect.Text.Trim().Equals("")) 
      { 
       //my problem 
       ParentSelect.DroppedDown = true; 

       Cursor.Current = Cursors.Default; 
      } 
     } 

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

Я знаю, что есть подобный пост, но ответившие не помог, так как они будут замедляться (пользователю придется ждать около второго типа на):

private void comboBox1_TextUpdate(object sender, EventArgs e) 
    { 
     var savedText = comboBox1.Text; 
     comboBox1.DroppedDown = true; 
     comboBox1.Text = savedText; 
     comboBox1.Select(savedText.Length, 0); 
    } 

Или не Worke с открытия выпадающего списка, который имеет важное значение:

comboBox1.DropDownStyle = ComboBoxStyle.DropDown; 
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems; 

есть ли способ, чтобы просто отключить «выбрать первый пункт» вещь?

+1

На Ваш вопрос? WPF? UWP? WinForms? Веб-формы? Xamarin? Что-то другое? Используйте теги! – taffer

+0

смотрите здесь: http://stackoverflow.com/questions/11445125/disabling-particular-items-in-a-combobox – Niklas

+0

Где находится ваш DropDownList? Где ваш TextBox? Единственным элементом управления, видимым в вашем коде, является ComboBox. Пожалуйста, постарайтесь приложить больше усилий, чтобы точно описать вашу проблему. – Sabuncu

ответ

0

Один из способов достижения - custom user control.

У вас может быть TextBox, перекрывающий ваш ComboBox.

Таким образом, пользователь будет взаимодействовать только с текстовым полем, и в соответствии с текстом, введенным в TextBox (с использованием соответствующего нажатия клавиши «Событие» будет нормально), вы можете запросить в базе данных и загрузить ComboBox с результатом запроса.

+0

Не очень хороший способ, но это помогло. Лучше писать мою собственную коробку, спасибо. – Luy

+0

Действительно, пользовательский контроль пользователя - это всегда план B. Однако я рад, что помог – Amit