Вы можете использовать событие TextChanged
, чтобы срабатывать всякий раз, когда пользователь вводит символ, и вы также можете использовать событие listbox
DataSourceChanged
с ним, чтобы навести курсор на определенный элемент или что угодно.
Я приведу вам пример:
private void textBox1_TextChanged(object sender, EventArgs e)
{
listBox1.DataSource = GetProducts(textBox1.Text);
listBox1.ValueMember = "Id";
listBox1.DisplayMember = "Name";
}
List<Product> GetProducts(string keyword)
{
IQueryable q = from p in db.GetTable<Product>()
where p.Name.Contains(keyword)
select p;
List<Product> products = q.ToList<Product>();
return products;
}
Поэтому, когда пользователь начинает вводить любой символ, метод getproducts
выполняется и заполняет поле списка, и по умолчанию наведите курсор на первый элемент в списке, который вы можете обработать.это также использует событие списка 101 * * для того, что вы хотите сделать.
Существует также другой интересный способ сделать это: TextBox.AutoCompleteCustomSource
Свойство :
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
AutoCompleteStringCollection stringCollection =
new AutoCompleteStringCollection();
textBox1.AutoCompleteCustomSource = stringCollection;
Этот список может занять только string[]
, поэтому вы можете получить их из своего источника данных, а затем при изменении текста textbox
добавить аналогичные слова из вашего источника данных, которые были заполнены в текстовое поле автозаполненияПользовательский источник:
private void textBox1_TextChanged(object sender, EventArgs e)
{
listBox1.Items.Clear();
if (textBox1.Text.Length == 0)
{
listbox1.Visible = false;
return;
}
foreach (String keyword in textBox1.AutoCompleteCustomSource)
{
if (keyword.Contains(textBox1.Text))
{
listBox1.Items.Add(keyword);
listBox1.Visible = true;
}
}
}
Добавить другое событие ListBoxSelectedindexchanged
, чтобы добавить выделенный текст в текстовое поле