2017-02-22 2 views
-3

В соответствии с требованием мы должны применить параметр автоматического фильтра для текстового поля электронной почты для приложения Windows. Мы можем реализовать автоматический фильтр для текстового поля электронной почты с помощью «AutoCompleteCustomSource»Автоматический фильтр для текстового поля с разделенной комой

Для этого мы создали программно список «AutoCompleteStringCollection» и установите его свойство «AutoCompleteCustomSource» в текстовом поле. В нашем почтовом ящике электронной почты также есть возможность ввести несколько писем с помощью разделителя комы.

В случае нескольких сообщений авто фильтр не работает должным образом.

Например, если мы вводим «Sa», он будет показывать электронные письма, начинающиеся с «Sa» Но если мы вводим «Sa» после ввода сообщения электронной почты («rahul @ gmail.com, Sa»), это не показаны элементы, начинающиеся с «Sa».

Есть ли способ решить эту проблему? Было бы признательно, если вы сможете предоставить решение.

AutoCompleteStringCollection data = new AutoCompleteStringCollection(); 
     data.Add("Mahesh Chand"); 
     data.Add("Mac Jocky"); 
     data.Add("Millan Peter"); 
     textBox1.AutoCompleteMode = AutoCompleteMode.Suggest; 
     textBox1.AutoCompleteCustomSource = data; 

С наилучшими пожеланиями,

+0

что вы сделали до сих пор? вы можете показать код? мы можем предоставить помощь, но не сгенерировать код с нуля –

+0

Я только что добавил код. Я использовал имя вместо адреса электронной почты – Ranish

+0

К сожалению, это невозможно. Проблема в том, что вы предоставляете (возможно, виртуальный) список возможных значений, которые могут быть введены и автоматически завершены. Но как этот список используется, будет решаться самим текстовым полем, а не быть источником. – Oliver

ответ

0

как стартер можно в принципе расширить AutoCompleteStringCollection data с уже написанной строкой, если вы столкнулись с ,.

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

private void textBox2_TextChanged(object sender, EventArgs e) 
{ 
    if (textBox2.Text.Last() == ',') 
    { 
     for (int i = 0; i < data.Count; i++) 
     { 
      data[i] = textBox2.Text + data[i]; 
     } 
    } 
} 

Вот результат:

enter image description here

Отказ от ответственности: проблемы еще предстоит решить:

  • избегать, чтобы показать уже написанное имя

  • обрабатывать случай, когда пользователь удаляет ,, потому что до сих пор расширение остается

  • возвращение в начальное состояние вашего AutoCompleteStringCollection

Я надеюсь, что это помогает

+0

Спасибо. Мы не можем добавить уже написанное имя, так как есть возможность вставить имя между двумя именами. – Ranish

+0

@ Забудьте, что вы уже почти можете написать свой собственный автозаполнение с гораздо большим количеством кода, я думаю. Удачи –

+0

@ Возможно, вы должны включить это требование в свой пост –

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