C#文本框按键控制帮助

3

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

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这样的键。我该如何设计它才能以相同的方式捕捉并使用enter/return键呢?


1
你是否在某种程度上将 Keys.Enter 除以 Return - user153923
@jp2code:下面的人已经解决了这个问题,感谢你的关注。虽然我没有表达清楚,但我的意思是我已经尝试过两种方法,这可能有些混淆,也不是最好的方法,但我认为基本的意思已经传达出去了。 - Nard Dog
1
是的,他们在我把所有的文字都输入之前就已经发布了他们的答案,并且说了几乎相同的话。所以,我通过添加评论做出了贡献,以防万一这不是你想到的东西。你永远不知道! :) - user153923
2个回答

6
您应该使用 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'结合使用,它也不会被检查到。学习过程仍有很长的路要走,但正在进行中,感谢您的帮助和答案。 - Nard Dog

0
请使用KeyDown事件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接