在 WinForms 窗体中有一个 TextBox 控件(准确地说是 DevExpress TextEdit ),如果焦点在文本框内,我不希望在用户按下 Enter 键时关闭窗体。

我想

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;

最佳答案

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

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

关于c# - 当用户在文本框中按回车键时如何不关闭表单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10878977/

10-16 19:26