AcceptButton 不会关闭表单
AcceptButton won't close form
我有两个非常相似的表单,但在其中一个中单击 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);
}
发布我的整个设计器文件可能不会有帮助。有什么特别有助于从中展示的东西吗?我在 Whosebug 上找不到类似的 post。
我错过了什么导致了不同的行为?
AcceptButton 属性 仅选择当您按下 Enter 键时将执行默认操作的按钮。在按钮周围有粗边框的 UI 中清晰可见。但这还不够,您还必须实施默认操作。
一种简单的方法是在设计器中设置按钮的 DialogResult 属性。这没关系,但当您的事件处理程序执行诸如验证对话框内容之类的操作时,往往会引起意外,您必须在不满意时将表单的 DialogResult 属性 设置回 None 。我个人更喜欢始终在 Click 事件处理程序中明确设置窗体的 DialogResult。那是可调试的代码,让我看看为什么它 "doesn't work".
我有两个非常相似的表单,但在其中一个中单击 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);
}
发布我的整个设计器文件可能不会有帮助。有什么特别有助于从中展示的东西吗?我在 Whosebug 上找不到类似的 post。
我错过了什么导致了不同的行为?
AcceptButton 属性 仅选择当您按下 Enter 键时将执行默认操作的按钮。在按钮周围有粗边框的 UI 中清晰可见。但这还不够,您还必须实施默认操作。
一种简单的方法是在设计器中设置按钮的 DialogResult 属性。这没关系,但当您的事件处理程序执行诸如验证对话框内容之类的操作时,往往会引起意外,您必须在不满意时将表单的 DialogResult 属性 设置回 None 。我个人更喜欢始终在 Click 事件处理程序中明确设置窗体的 DialogResult。那是可调试的代码,让我看看为什么它 "doesn't work".