C# 当用户在文本框内按enter键时如何不关闭窗体
在WinForms表单中有一个控件(确切地说),如果焦点在文本框中,我不希望在用户按下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键,使窗体保持打开状态 解决方案 为我工作
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键。