我有两种非常相似的表单,但是其中一种单击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。那是可调试的代码,让我看看为什么它“不起作用”。