【问题标题】:C# Textbox Keypress Control HelpC# 文本框按键控制帮助
【发布时间】:2011-08-31 10:13:22
【问题描述】:

我有一个标准文本框,我想在按键上执行操作。我目前有这个代码:

private void idTextEdit_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter/Return)
        {
            e.Handled = true;
            SearchButtonClick(sender, EventArgs.Empty);
        }
    }

问题是,我已经尝试过 Enter 和 Return ,这就是原因。它只会触发检查与 shift、control 等不同的普通键。我该如何设计它以便它能够以相同的方式拾取和使用 enter/return 键?

【问题讨论】:

  • 你是否以某种方式将Keys.Enter除以Return
  • @jp2code:下面的人得到了这个,不过感谢您的检查。我不是很清楚这意味着什么,我的意思是在那里表示我已经尝试了这两种方法,我知道并且不是最好的方法,但我认为基本点会得到理解。
  • 是的,在我输入所有文本之前,他们已经发布了答案,并且说的差不多。 ...所以,我通过添加评论做出了贡献,以防万一这不是您想要的。你永远不知道! :)

标签: c# windows winforms visual-studio


【解决方案1】:

您应该改用KeyDown 事件:

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Return)
    {
        //...
    }
}

如果出于某种原因必须KeyPress,您可以使用(char)13'\r' 进行检查,但我怀疑这在非Windows 操作系统上是否能正常工作。

if (e.KeyChar == '\r')

您不能只将Keys.Return 转换为char,因为它是一个位标志枚举并且不只是保存相应的ASCII 码。

【讨论】:

  • 啊,很多以前不知道的东西,每天还在学习。我切换到 KeyDown,它正是我需要的。不过值得注意的是,对于非字符键,KeyPress 事件根本没有触发,所以如果我必须将它与 (char)13 或 '\r' 结合使用,它甚至不会命中检查。学习过程还有很长的路要走,但它正在发生变化,感谢您的帮助和回答。
【解决方案2】:

改用 KeyDown 事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    相关资源
    最近更新 更多