我需要在 Windows 应用程序中有一个Button
on a UserControl
(not Form
) 来响应“Enter”点击,这是一个设置为 a 的按钮的Accept Button
方式Form
。
我无法使按钮成为焦点,因为我需要其他控件来关注标签更改。
非常感谢任何帮助:)
我需要在 Windows 应用程序中有一个Button
on a UserControl
(not Form
) 来响应“Enter”点击,这是一个设置为 a 的按钮的Accept Button
方式Form
。
我无法使按钮成为焦点,因为我需要其他控件来关注标签更改。
非常感谢任何帮助:)
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);
}
如果将按钮上的 Modifier 属性设置为“Public”,则可以将该按钮用作表单上的 AcceptButton。不幸的是,您不能在设计时使用 Visual Studio 的属性窗口来完成,但您可以在代码中完成。
public Form1()
{
InitializeComponent();
this.AcceptButton = userControl11.button1;
}
我知道这是一个老问题,并且已经回答了,但是我在某些情况下使用它:
private void UserControl11_Load(object sender, EventArgs e)
{
this.FindForm().AcceptButton = Button1;
}