3

我有两个非常相似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 上找不到类似的帖子。

我错过了什么导致不同的行为?

4

1 回答 1

6

AcceptButton 属性仅选择在您按下 Enter 键时将实现默认操作的按钮。在 UI 中清晰可见,按钮周围有粗边框。但这还不够,您还必须实现默认操作。

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

于 2015-08-20T22:31:19.857 回答