DialogForm无法正常工作-必须按两次“取消”按钮
本文关键字:按两次 取消 按钮 常工作 工作 DialogForm | 更新日期: 2023-09-27 18:25:25
我有一个行为奇怪的对话框-我必须按两次"取消"按钮(第一次它返回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.在对话框中,我有:
1) 设置"取消"按钮的属性DialogResult=取消
2) 在"取消"按钮上,单击事件,我显式地设置DialogResult(我尝试过使用和不使用它,因为只设置按钮的DialogResult=Cancel就足够了)
this.DialogResult=DialogResult.Cancel
但问题是,在我第一次按下Cancel按钮时,它返回DialogResult.None,所以它再次显示dialogForm,然后当我再次按下Cancel时,按钮返回DialogResult.Cancel
可能是什么问题?有什么想法吗?
您有错误的代码。您将显示两次DialogResult。你需要展示一次并得到结果。然后在此基础上你可以决定做什么。像这个一样改变它
DialogResult result = dlgProcess.ShowDialog(this);
if (result == DialogResult.OK)
{
// do stuff
}
else if (result == DialogResult.Cancel)
{
MessageBox.Show(@"Process was cancelled...");
}
这将为您提供所需的结果,您将调用showdialog两次(这是您的主要问题),而不是这样做:
var dlgProcess = new DlgFormProcessMismatches();
if (dlgProcess.ShowDialog(this) == DialogResult.OK)
{
//do stuff.....
}
else if (dlgProcess.DialogResult == DialogResult.Cancel)
{
MessageBox.Show(@"Process was cancelled...");
}
问题是你单击cancel,它会检查dialogresult.ok,如果它为false,它会通过else再次显示表单,第二次单击cancel会将cancel返回到else-if语句。