Как заставить AutoComplete работать в одной строке TextBox и иметь возможность переопределить событие KeyPress - PullRequest
1 голос
/ 23 декабря 2011

Я пытаюсь использовать функцию AutoComplete для текстовых полей в моем приложении winforms.

Текстовое поле используется для отправки некоторых команд GPIB / SCPI на инструмент.Поэтому, прежде чем я получил представление об автозаполнении, оно работало нормально, но с автозаполнением событие KeyPress больше не работает.

Код, который я написал, выглядит так:

//AutoComplete collection
AutoCompleteStringCollection _commandHistory = new AutoCompleteStringCollection();

public Form1() //Constructor
{
    InitializeComponent();

    _commandHistory.AddRange(new string[3]{"*IDN?", "*RST", ":READ?"});
    tbCommandLine.AutoCompleteSource = AutoCompleteSource.CustomSource;
    tbCommandLine.AutoCompleteCustomSource = _commandHistory;
    tbCommandLine.AutoCompleteMode = AutoCompleteMode.Append;
}

Ивот что я определил для события KeyPress

private void tbCommandLine_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Return)
    {
        SendCommand(tbCommandLine.Text.Trim()); //Send Command
        _commandHistory.Add(tbCommandLine.Text.Trim()); //Store command in autocomple source
        tbCommandLine.Text = String.Empty; //clear textbox
    }
}

После того, как я добавил автозаполнение, если я нажму клавишу ввода или введу что-нибудь из источника автозаполнения, текст в текстовом поле будет подсвечен иклавиша ввода ничего не сделает.

1 Ответ

1 голос
/ 23 декабря 2011

Решено путем изменения KeyPress на KeyDown

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...