.NET TextBox - обработка ключа ввода
Что является окончательно лучшим способом выполнения действия на основе пользовательского ввода ключа Enter (Keys.Enter
) в .NET TextBox
, предполагая право собственности на ввод ключа, что приводит к подавлению клавиши Enter сам TextBox (e.Handled = true)?
Предположим для этого вопроса, что желаемое поведение не должно указывать на кнопку по умолчанию формы, а скорее на какую-то другую пользовательскую обработку, которая должна произойти.
Ответы
Ответ 1
Добавить событие нажатия клавиши и заблокировать клавишу ввода
Программно выглядит так:
//add the handler to the textbox
this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(CheckEnterKeyPress);
Затем добавьте обработчик в код...
private void CheckEnterKeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Return)
{
// Then Do your Thang
}
}
Ответ 2
Чтобы связать функцию с событием нажатия клавиши в текстовом поле, добавьте следующий код в конструктор .cs формы:
this.textbox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.OnKeyDownHandler);
Теперь определите функцию "OnKeyDownHandler" в файле cs той же формы:
private void OnKeyDownHandler(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
//enter key has been pressed
// add your code
}
}
Ответ 3
Вы можете удалить это событие FormLoad:
textBox1.KeyPress += (sndr, ev) =>
{
if (ev.KeyChar.Equals((char)13))
{
// call your method for action on enter
ev.Handled = true; // suppress default handling
}
};