C#:麻烦与Form.AcceptButton

问题描述:

我有一个窗体的按钮被设置为窗体的AcceptButton。该表单还有其他几个控件。现在,当我在其他控件上按Enter时,由于表单上的接受按钮,表单会被关闭。 CancelButton也一样。我该如何处理。我尝试连接到表单和控件的按键keydown事件。没有用。任何解决此问题的方法?C#:麻烦与Form.AcceptButton

由于一吨, Datte

不完全知道你如何指望你的表单功能,但你可以不喜欢下面有过的东西多一点控制:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
    { 
     if (keyData == Keys.Enter) 
     { 
      // do something 
     } 
     if (keyData == Keys.Escape) 
     { 
      // do something else 
     } 
     return base.ProcessCmdKey(ref msg, keyData); 
    } 

那该是多么AcceptButton性质的作品。它指定当您按<Enter>时自动点击的按钮。

如果您不想要这种行为,请不要将其设置为AcceptButton。没有其他理由要这样做。

您可以从表单中删除的AcceptButton并设置将KeyPreview将处理其KeyDown事件的窗体上的属性。在那里你可以检查回车键并相应地采取行动。

这是形式的,即

的功能之一,如果按钮没有焦点,如果你仍然希望当用户点击输入要执行所需的代码...

设置的属性的AcceptButton即使按钮没有焦点,也可以通过按ENTER键来允许用户点击按钮。

问候。

尝试这一个在VB>净

If CType(Me.ActiveControl, Button).Name = Button1.Name Then 

     End If 
+0

该代码是不正确(除了是VB.NET代码,而不是C#代码 - 看到问题标签)。在进行类型转换时,不能将目标类型指定为字符串。另一种编写这种方法的方法是'Object.ReferenceEquals(Me.ActiveControl(),btnSubmit)'。 – stakx 2010-01-22 09:14:33

+0

检查它?我编辑。 – 2010-01-22 09:31:47

+0

@stakx:...说实话我更喜欢'==' – 2011-11-04 14:06:00