这似乎非常基本,但未能找到任何相关信息。
我在Windows窗体中有一个按钮,它是AcceptButton并且应该始终具有AcceptButton行为,即当焦点在窗体上时按下回车键应始终单击按钮,并且应始终突出显示该按钮以显示该操作可用。
但是,当单击一个不同的按钮时,该按钮现在突出显示,按下Enter键时,单击该按钮而不是AcceptButton。
这是我的测试应用程序,它显示了行为:
public Form1()
{
InitializeComponent();
AcceptButton = btnAccept;
}
private void btnAccept_Click(object sender, EventArgs e)
{
MessageBox.Show("You clicked the accept button");
Debug.WriteLine(AcceptButton == btnAccept ? "true" : "false");
}
private void btnNothing_Click(object sender, EventArgs e)
{
Debug.WriteLine(AcceptButton == btnAccept ? "true" : "false");
}
private void btnBrowse_Click(object sender, EventArgs e)
{
DialogResult result = folderBrowserDialog1.ShowDialog();
Debug.WriteLine(AcceptButton == btnAccept ? "true" : "false");
}
当应用程序最初启动时 - 它按预期工作,btnAccept突出显示并输入点击该按钮。
但是,当我单击btnNothing或btnBrowse时,该按钮现在突出显示并按Enter键再次单击该按钮。此外,即使输入按钮单击其他按钮,调试行也始终显示btnAccept仍然是AcceptButton。
Button从Control继承的CanFocus属性看起来很有前途,但此属性是只读的。
这里发生了什么?我可以用一些属性来改变这种行为吗?
根据@AWinkle的答案结束了这个解决方案:
public Form1()
{
InitializeComponent();
AcceptButton = btnAccept;
}
private void btnAccept_Click(object sender, EventArgs e)
{
MessageBox.Show("You clicked the accept button");
}
private void btnNothing_Click(object sender, EventArgs e)
{
Button acceptButton = (Button)this.AcceptButton;
acceptButton.Select();
}
private void btnBrowse_Click(object sender, EventArgs e)
{
DialogResult result = folderBrowserDialog1.ShowDialog();
Button acceptButton = (Button)this.AcceptButton;
acceptButton.Select();
}