C# 当用户在文本框内按enter键时如何不关闭窗体

C# 当用户在文本框内按enter键时如何不关闭窗体,c#,winforms,textbox,devexpress,C#,Winforms,Textbox,Devexpress,在WinForms表单中有一个控件(确切地说),如果焦点在文本框中,我不希望在用户按下enter键时表单关闭 我想 filterTextBox.KeyDown += (sender, e) => e.Handled = e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter; 就足够了,但它似乎被忽略了,窗体仍然关闭 我的问题是: 如何故意忽略单行文本框控件中的enter键,使窗体保持打开状态 解决方案 为我工作

在WinForms表单中有一个控件(确切地说),如果焦点在文本框中,我不希望在用户按下enter键时表单关闭

我想

filterTextBox.KeyDown += 
    (sender, e) => 
        e.Handled = e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter;
就足够了,但它似乎被忽略了,窗体仍然关闭

我的问题是:

如何故意忽略单行文本框控件中的enter键,使窗体保持打开状态

解决方案

为我工作:

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;
更新:也尝试处理事件。MSDN文档在备注部分对此进行了很好的解释。通过设置为true,您可以覆盖默认行为,以便您的文本框可以处理该键。您需要在
PreviewKeyDown
中执行此操作,然后像在
KeyDown
中一样处理键


编辑:不起作用:以前建议的属性

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

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

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

@我更新了我的答案。看起来您还需要处理
PreviewKeyDown
,以便文本框不会忽略enter键。