我有两种非常相似的表单,但是其中一种单击AcceptButton可以关闭该表单,而另一种则不能关闭该表单。他们两个都将其AcceptButton设置为btnAccept

我最近创建了第二个,第一个已经存在了一段时间,并且是由其他人创建的。

它们都以这种方式打开:

using(var form = new SomeDialog(dependency))
{
    form.StartPosition = FormStartPosition.CenterParent;
    form.ShowDialog(this);
}


他们两个都沿着这些行处理接受按钮的单击。

private void btnAccept_Click(object sender, EventArgs e)
{
  _dependency.DoSomething(userInput);
}


发布整个设计师文件可能不会有帮助。有什么特别的东西可以从中显示出来吗?我在StackOverflow上找不到类似的帖子。

我在想什么导致行为差异?

最佳答案

AcceptButton属性仅选择按Enter键时将执行默认操作的按钮。在用户界面中清晰可见,按钮周围带有粗边框。但这还不够,您仍然必须实施默认操作。

一种简单的方法是在设计器中设置按钮的DialogResult属性。没关系,但是当事件处理程序执行诸如验证对话框内容之类的操作时,往往会引起意外,您不满意时必须将窗体的DialogResult属性设置回None。我个人更喜欢始终在Click事件处理程序中显式设置表单的DialogResult。那是可调试的代码,让我看看为什么它“不起作用”。

09-07 00:52