2016-03-30 1 views
3

Моей проблемой:Создание автозаполнения текстового поля с выпадающим меню

У меня есть список из 118 имен химического элемента. И я хочу создать текстовое поле, в котором при вводе он выкинет выпадающее меню с предложением имен. Я сделал это текстовое поле в winforms, и это был кусок пирога, но мои попытки сделать его в wpf напрасны. Я пробовал расширенный набор инструментов wpf, nimgoble и некоторые другие автозаполненные текстовые библиотеки. До сих пор тупик ... Я тоже новичок в wpf, поэтому, может быть, я что-то пропустил с этими libs? Я не могу заставить их перечислить мои предметы, а некоторые даже не покажут выпадающее меню.

Вот что я хотел:

enter image description here

Вот как я, наконец, достиг этого:

Так что я решил это, используя комбинацию текстового поля и списка. Где в текстовом поле пользовательских типов и при его изменении (событие с измененным текстовым полем) он проверяет совпадения внутри списка, который содержит имена всех 118 элементов и отображает совпадения для введенного текста внутри списка. Вот код:

private void textBox_TextChanged(object sender, TextChangedEventArgs e) 
    { 

     listBox.Items.Clear(); 


     if (textBox.Text.Trim() != "") 
     { 
      string regexPattern = (textBox.Text.ToString()) + "\\w*"; 
      regexPattern = char.ToUpper(regexPattern[0]) + regexPattern.Substring(1); //prvo slovo veliko 

      Match match = Regex.Match(ElementNames.allElements, regexPattern); 
      while (match.Success && match.Value != "") 
      { 
       listBox.Items.Add(match.Value.ToString()); 
       listBox.Visibility = Visibility.Visible; 

       match = match.NextMatch(); 
      } 
     } 

      if (listBox.Items.IsEmpty || listBox.Items.Count == 119) 
      { 
       listBox.Visibility = Visibility.Collapsed; 
       if (listBox.Items.Count == 119) listBox.Items.Clear(); 
      } 

     HighlightElementsOnTable(); 
     OtherButtonsHighlight(); 
     BringBackColors(); 
    } 
+1

Я бы рекомендовал начать очень просто. Использование события с измененным текстом, чтобы узнать, что пользователь вводит. Затем распечатайте результаты, которые хотите показать. Если это сработает, вы можете начать добавлять всплывающее окно/всплывающее окно, чтобы показать результаты ... –

+0

@FeDe Спасибо, я решил проблему, используя комбинацию текстового поля и списка, где и найти совпадение, когда textbox_changed запущен и перечисляет совпадения в списке. Кроме того, кто-нибудь мог бы усомниться в повышении или чем-то, потому что я получил плохую репутацию по этому вопросу и мешает мне стать частью этого веб-сайта. Большое спасибо .. :) – maran

+0

попытайтесь немного изменить свой вопрос. возможно, добавьте рисунок того, что вы хотите, структурируйте его немного больше, добавьте сериал того, что oyu попробовал, и я уверен, что вы получите некоторые upvotes: D –

ответ

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

  • Нет связанных вопросов^_^