Подтвердить что ты не робот

.NET TextBox - обработка ключа ввода

Что является окончательно лучшим способом выполнения действия на основе пользовательского ввода ключа Enter (Keys.Enter) в .NET TextBox, предполагая право собственности на ввод ключа, что приводит к подавлению клавиши Enter сам TextBox (e.Handled = true)?

Предположим для этого вопроса, что желаемое поведение не должно указывать на кнопку по умолчанию формы, а скорее на какую-то другую пользовательскую обработку, которая должна произойти.

4b9b3361

Ответ 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
    }
};