繁体   English   中英

当用户在文本框中按Enter键时,如何不关闭表单

[英]How to not close a form when user presses enter key inside a text box

在WinForms表单中有一个TextBox控件(精确的DevExpress TextEdit ),如果焦点位于文本框内,我希望在用户按下回车键时关闭表单。

我想

filterTextBox.KeyDown += 
    (sender, e) => 
        e.Handled = e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter;

这将是足够的,但它似乎被忽略,表格仍然关闭。

我的问题是:

如何故意忽略单行文本框控件内输入以使表单保持打开状态?

Botz3000的解决方案对我有用

filterTextBox.PreviewKeyDown += 
    (sender, e) => 
        e.IsInputKey = e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter;
filterTextBox.KeyDown += 
    (sender, e) => 
        e.Handled = e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter;

更新 :尝试处理PreviewKeyDown事件。 MSDN文档在备注部分很好地解释了它。 通过将IsInputKey设置为true,您可以覆盖默认行为,以便TextBox可以处理密钥。 你需要在PreviewKeyDown执行此操作,然后像在KeyDown那样处理密钥。

编辑:不工作:以前建议使用EnterMoveNextControl属性

基于你们的解决方案,在常规的RichTextBox处理PreviewKeyDown已经足够好了。

private void rtbNote_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    e.IsInputKey = e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter;
}

如果不自己尝试,我想我只需在文本框的KeyDown中设置一个布尔值,然后在Form中关闭,检查该布尔值并取消表单闭包(如果已设置)(然后重置布尔值)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM