如何仅在c#中的特定情况下调用事件key_down?

时间:2015-12-11 13:34:30

标签: c#

我有2个组合框和一个文本框(combo1,combo2,textBox)。以下是事件key_down的代码:

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

当我点击键盘上的ENTER按钮时,我想在表格上找到该程序调用搜索按钮。问题是,当我从组合框中选择一些项目并单击ENTER给我那个项目时,他也会调用searh按钮,ofcource,但我不想调用搜索,直到我填充组合框和文本框。所以,当我的焦点在文本框上时,我想只调用搜索按钮。知道怎么做吗?

2 个答案:

答案 0 :(得分:2)

如上所述,您可以将事件放在文本框中。另外,根据您的原始问题,您可以检查文本框是否具有焦点:

private void MyForm_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (textBox1.Focused) // or whatever your textbox is called
                {
                    buttonSearch_Click(sender, e);   
                }
            }

        }

答案 1 :(得分:1)

每个控件都有特定事件。您正在使用Form事件,但如果您只想在文本框聚焦时进行keydown,我建议如下:

private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    if(e.KeyCode == Keys.Enter)
        buttonSearch_Click(sender,e);
}