【问题标题】:How to call event key_down only in specific situations in c#?如何仅在c#中的特定情况下调用事件key_down?
【发布时间】:2015-12-11 21:46:35
【问题描述】:

我有 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 给我该项目时,他也调用了搜索按钮,ofcource,但我不想调用搜索,直到我同时填充组合框和文本框。所以,我只想在我的焦点在文本框上时才调用搜索按钮。知道怎么做吗?

【问题讨论】:

  • "我只想在我的焦点在文本框上时才调用搜索按钮" - 所以你可以把 keydown 事件放在文本框上?
  • 你使用的是winforms还是wpf?
  • 是的,我不知道文本框有事件键,没有检查。我是这份工作的新手,我现在发现这是个愚蠢的问题。:)

标签: c#


【解决方案1】:

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

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);   
                }
            }

        }

【讨论】:

    【解决方案2】:

    每个控件都有特定的事件。您正在使用 Form 事件,但如果您只想在 Textbox 集中时使用 keydown,我建议如下:

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

    【讨论】:

    • 是的,没错。 NDJ 立即回复了我的问题,但如果他不输入一些代码,我不知道我是否可以接受答案... Tnx 给大家,我现在明白了。
    • 是的,但我从自己身上知道,当我看到一个例子时,我会更容易理解事情! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    相关资源
    最近更新 更多