Установите другие поля, когда пользователь выбирает правильный параметр автозаполнения для текстового поля - PullRequest
3 голосов
/ 06 июля 2011

У меня есть TextBox в winform и я установил AutoCompleteSource TextBox как CustomSource. Теперь проблема состоит в том, чтобы установить другие поля в форме, соответственно, пользователь выбирает опцию из списка автозаполнения.
Например, мой список автозаполнения содержит "foo", "food", "foomatic". Когда пользователь вводит 'f', отображаются все три параметра. Пользователь выбирает "foo". И следующее текстовое поле в форме изменяется соответственно. Как это сделать?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 25 июня 2012

Я использовал ComboBox, чтобы получить эту опцию:

    // Create datasource
    List<string> lstAutoCompleteData = new List<string>() { "first name", "second name", "third name"};

    // Bind datasource to combobox
    cmb1.DataSource = lstAutoCompleteData;

    // Make sure NOT to use DropDownList (!)
    cmb1.DropDownStyle = ComboBoxStyle.DropDown;

    // Display the autocomplete using the binded datasource 
    cmb1.AutoCompleteSource = AutoCompleteSource.ListItems;

    // Only suggest, do not complete the name
    cmb1.AutoCompleteMode = AutoCompleteMode.Suggest;

    // Choose none of the items
    cmb1.SelectedIndex = -1;

    // Every selection (mouse or keyboard) will fire this event. :-)
    cmb1.SelectedValueChanged += new EventHandler(cmbClientOwner_SelectedValueChanged);

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

Autocomplete on Combobox

1 голос
/ 15 июля 2011

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

В качестве альтернативы вы можете захватить ключевые события для клавиши «Ввод», которая возникает, если пользователь выбирает элемент в списке нажатием клавиши ввода или щелчком мыши

private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        //Check if the Text has changed and set the other fields. Reset the textchanged flag
        Console.WriteLine("Enter Key:" + textBox1.Text);
    }
    else if (e.KeyCode == Keys.Down)
    {
        //Check if the Text has changed and set the other fields. Reset the textchanged flag
        Console.WriteLine("Key Down:" + textBox1.Text);
    }
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
    //this event is fired first. Set a flag to record if the text changed. 
    Console.WriteLine("Text changed:" + textBox1.Text);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...