【问题标题】:KeyDown event foreach textbox in form and detect enter表单中的每个文本框的 KeyDown 事件并检测输入
【发布时间】:2014-04-10 10:05:01
【问题描述】:

我想在我的表单中的每个文本框中添加一个 KeyDown 事件,这实际上是有效的,但是我如何在我的事件中检测到键?

这是为每个文本框创建它的代码

for (int i = 0; i < 5; i++)
{
    foreach (Control control in tabControl_1.TabPages[i].Controls)
    {
        if (control.GetType() == typeof(TextBox))
        {
            control.KeyDown += new KeyEventHandler(this.TextBoxes_Enter);
        }
    }
}

private void TextBoxes_Enter(object sender, EventArgs e)
{
   ((TextBox)sender).KeyDown = ?
}

如果我有一个文本框,我会知道该怎么做,但是如何检测每个文本框的 Key Enter?

这是给一个人的:

if(e.KeyCode == Keys.Enter)
{

}

【问题讨论】:

  • 我不明白这个问题。你想“为每个人做些什么”?
  • 如果输入密钥,我想使用 performClick() 来激活或使用按钮。我想检测 Key Enter。
  • 什么意思?您将该处理程序分配给每个文本框的 KeyDown 事件,因此它将检测每个文本框的输入键。 if(e.KeyCode == Keys.Enter) { performClick(); } 有什么问题?
  • 如果我在设计器中添加事件,它只适用于一个文本框,但我想将它添加到事件 TextBoxes_Enter 但我怎么能在那里做到。如果我写 e.KeyCode 他不知道 keyCode。我想知道如何检测那里的“Enter”键。

标签: c# events visual-studio-2012 keydown keyevent


【解决方案1】:

TextBoxes_Enter 方法将分配多少个处理程序并不重要 - 每个处理程序的行为方式完全相同。如果它不起作用,则意味着您正在谈论两种不同的方法。我几乎错过了一个事实,即您的:

private void TextBoxes_Enter(object sender, EventArgs e)

应该是

private void TextBoxes_Enter(object sender, KeyEventArgs e)

顺便说一句,您可以像这样分配它们:

control.KeyDown += TextBoxes_Enter;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-23
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2011-06-10
    • 2021-04-28
    • 2023-03-10
    相关资源
    最近更新 更多