9

我需要在 Windows 应用程序中有一个Buttonon a UserControl(not Form) 来响应“Enter”点击,这是一个设置为 a 的按钮的Accept Button方式Form

我无法使按钮成为焦点,因为我需要其他控件来关注标签更改。

非常感谢任何帮助:)

4

3 回答 3

14

AcceptButton 是 Form 的属性,不能用于 UserControl。不过,您可以简单地覆盖 ProcessCmdKey ,只要用户控件具有焦点,这将起作用。否则,如果您有多个可能处于活动状态的控件,您将需要单独使用表单的 AcceptButton 或覆盖表单中的 ProcessCmdKey。

  protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
  {
      if (keyData == Keys.Enter) 
      {
        button.PerformClick();
        return true;
      }
      return base.ProcessCmdKey(ref msg, keyData);
    }
于 2013-10-22T08:40:58.000 回答
0

如果将按钮上的 Modifier 属性设置为“Public”,则可以将该按钮用作表单上的 AcceptButton。不幸的是,您不能在设计时使用 Visual Studio 的属性窗口来完成,但您可以在代码中完成。

    public Form1()
    {
        InitializeComponent();
        this.AcceptButton = userControl11.button1;
    }
于 2013-10-22T08:52:50.677 回答
0

我知道这是一个老问题,并且已经回答了,但是我在某些情况下使用它:

private void UserControl11_Load(object sender, EventArgs e)
{
    this.FindForm().AcceptButton = Button1;
}
于 2021-06-05T15:08:31.337 回答