防止WinForm AcceptButton处理返回键

Dav*_*wns 10 c# winforms

我有一个表单,其中有一个连接到AcceptButton属性的按钮,以便在用户按下Return键时出现逻辑并关闭表单.

在该表单上,我显示了TextBox当用户双击某个区域时出现的动态创建,然后在用户按下Return时隐藏.

当用户在TextBox有焦点时按下Return键时,如何防止表单处理按键?

我试图说按键操作是在TextBox.KeyDown事件处理程序中处理的,KeyEventArgs.HandledButton.Click我的接受按钮的事件首先被触发...

Nob*_*are 14

虽然AcceptButton在TextBox具有焦点时重置表单将起作用,但我相信更合适的解决方案是使用TextBoxes AcceptsReturn属性.

如果你设置

myTextBox.AcceptsReturn = true;
Run Code Online (Sandbox Code Playgroud)

按下RETURN时表单不会接受,但您的TextBox可以自行处理.

这样可以避免在代码中的多个位置重置AcceptButton.

  • 更好,更优雅的解决方案,+ 1! (3认同)
  • 只有当 TextBox 的 'Multiline' 属性为 true 时,此解决方案才有效。 (2认同)

Fre*_*örk 11

使用Enter和的Leave事件TextBoxAcceptButton属性设置为null(打开Enter)并将按钮重新分配给它(打开Leave).

  • 一旦有人指出它,这是显而易见的!:) (2认同)

Tim*_*mwi 5

创建该文本框时将该AcceptButton属性设置为 null,并在失去焦点时将其设置回正常值:

var myTextBox = new TextBox ... ;
AcceptButton = null;

myTextBox.Leave += (s, e) => { AcceptButton = btnOK; };
Run Code Online (Sandbox Code Playgroud)