将文本框的KeyDown事件连接到按钮控件的单击事件

时间:2009-10-08 21:53:19

标签: c# events controls event-handling

我有一个带有名为'tbWO'的文本框的表单。该字段用于输入采购订单编号。我还有一个名为'btnFill'的按钮控件。单击btnFill时,它会使用“tbWO”中的参数填充数据集。

我希望能够在'tbWO'文本框中输入'ENTER'(在输入采购订单#之后),然后激活我上面提到的btnFill_Click事件。

我尝试了这些错误的,编写得很糟糕的代码 - 但是,它只是不能正常工作,即根本不工作,或者我认为它应该如何工作。无论如何,代码如下;在所有的荣耀中。

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

我会对使用'new EvenHandler(??)感到困惑。相当新的C#(可能很明显很明显。)

任何帮助,链接和建议 - 都非常感谢。

感谢。

Jasoomian

2 个答案:

答案 0 :(得分:0)

你可以这样做......

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

答案 1 :(得分:0)

通常,我厌恶将一个事件处理程序映射到另一个事件处理程序。相反,编写一个单独的函数,并让两个事件处理程序调用该单独的函数。像这样:

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。