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

时间:2012-06-04 09:20:13

标签: c# winforms textbox devexpress

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

我想

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

就足够了,但它似乎被忽略了,表格仍然关闭。

我的问题是:

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

解决方案

The solution of 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;

3 个答案:

答案 0 :(得分:6)

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

编辑:不工作:之前建议的EnterMoveNextControl属性

答案 1 :(得分:2)

根据您的家伙解决方案,定期RichTextBox处理PreviewKeyDown已经足够了。

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

答案 2 :(得分:1)

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