C # Autocomplete Texbox Click Событие - PullRequest
5 голосов
/ 11 марта 2012

Я использую c # winforms visual studio 2010. У меня есть текстовое поле со списком в качестве источника данных для автозаполнения.Все хорошо, за исключением того, что я не нахожу событие, когда нажата автозаполнение.Я хочу, чтобы при автозаполнении ударил строку do и что-то еще, кроме заполнения текстового поля выбранным значением строки.Возможно ли это?

Большое спасибо

1 Ответ

3 голосов
/ 16 января 2014

Я провел быстрый тест, который, кажется, сработал, не обращайте на меня внимания, если он довольно хакерский.Я создал UserControl, который наследуется от TextBox.Он отслеживает событие KeyDown, которое срабатывает перед событием TextChanged, переключает бит на true, а событие TextChanged проверяет бит и генерирует событие (AutoCompleteUsed) для оповещения классов мониторинга о том, что авто-полная функциональность была использована.

public partial class MyTextBox : TextBox
{
    public delegate void AutoCompleteDelegate();
    public event AutoCompleteDelegate AutoCompleteUsed;
    public MyTextBox()
    {
        InitializeComponent();
        this.TextChanged += MyTextBox_TextChanged;
        this.KeyDown += MyTextBox_KeyDown;
    }
    private bool keyPressed = false;
    void MyTextBox_KeyDown(object sender, KeyEventArgs e)
    {
        keyPressed = true;
    }

    void MyTextBox_TextChanged(object sender, EventArgs e)
    {
        if (!keyPressed && AutoCompleteUsed != null)
        {
            AutoCompleteUsed();
        }
        keyPressed = false;
    }
}

Редактировать 1: @ Ханс Пассант дал мне ответ в своем комментарии, я только что дал вам рабочий (ish?) пример.

...