我有一个奇怪行为的对话框 - 我必须按两次取消按钮(第一次它返回DialogResult.None而我无法找到这种行为的原因)
1。打开对话框表格的代码
using (var dlgProcess = new DlgFormProcessMismatches())
{
if (dlgProcess.ShowDialog(this) == DialogResult.OK)
{
// do stuff
}
else if (dlgProcess.ShowDialog(this) == DialogResult.Cancel)
{
MessageBox.Show(@"Process was cancelled...");
}
}
2。在dialogForm中我有:
1)设置“取消”按钮的属性DialogResult =取消
2)在取消按钮单击事件上我明确设置了DialogResult(我已尝试使用和不使用此功能,因为它应该足以设置按钮的Dialogresult =取消)
this.DialogResult=DialogResult.Cancel
但问题是,在我第一次按下取消按钮时,它返回DialogResult.None,所以它再次显示dialogForm,然后当我再次按下它时取消按钮返回DialogResult.Cancel
可能是什么问题?有什么想法吗?
答案 0 :(得分:4)
你的代码错了。您正在显示DialogResult两次。您需要显示一次并获得结果。然后在此基础上你可以决定做什么。像这样改变
DialogResult result = dlgProcess.ShowDialog(this);
if (result == DialogResult.OK)
{
// do stuff
}
else if (result == DialogResult.Cancel)
{
MessageBox.Show(@"Process was cancelled...");
}
答案 1 :(得分:1)
这将为您提供所需的结果,您将两次调用showdialog(这是您的主要问题),而是执行此操作:
var dlgProcess = new DlgFormProcessMismatches();
if (dlgProcess.ShowDialog(this) == DialogResult.OK)
{
//do stuff.....
}
else if (dlgProcess.DialogResult == DialogResult.Cancel)
{
MessageBox.Show(@"Process was cancelled...");
}
问题是你点击取消所以它检查dialogresult.ok并且它是false它通过else再次显示表单,并通过点击取消第二次它返回取消到其他if语句。