Связать событие _KeyDown текстового поля с событием _click кнопки управления - PullRequest
0 голосов
/ 09 октября 2009

У меня есть форма с текстовым полем под названием «tbWO». Это поле используется для ввода номера заказа на поставку. У меня также есть элемент управления кнопки под названием «btnFill». При щелчке по btnFill набор данных заполняется параметром из 'tbWO.'

Я бы хотел иметь возможность нажать «ENTER» в текстовом поле «tbWO» (после ввода номера заказа на поставку) и запустить его как событие btnFill_Click, о котором я упоминал выше.

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

        private void txtWO_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            btnFill.Click += new EventHandler(btnFill_Click);
        }
    }

Я допускаю путаницу при использовании 'нового EvenHandler (??). Довольно плохо знаком с C # (что, вероятно, очевидно).

Любая помощь, ссылки, предложения - все с благодарностью.

Спасибо.

Jasoomian

Ответы [ 2 ]

0 голосов
/ 09 октября 2009

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

private void txtWO_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        AcceptInput();
    }
}

private void btnFill_Click(object sender, EventArgs e)
{
    AcceptInput();
}

private void AcceptInput()
{
    // Do clever stuff here when the user presses enter 
    // in the field, or clicks the button.
}

Конечно, вы можете чувствовать себя по-другому, но это выполняет то же самое, но с (IMO) гораздо более читабельным кодом. Но по моему опыту обработчики перекрещивающихся событий очень неаккуратны и приводят к головным болям обслуживания из-за wazoo.

0 голосов
/ 09 октября 2009

Вы могли бы сделать это ...

private void txtWO_KeyUp(object sender, KeyEventArgs e)    {        
    if (e.KeyCode == Keys.Enter)        {            
         btnFill_Click();
    }    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...