这看起来很简单,但我一直试图让它正常工作,但我不能。这是原始代码:
ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
mFileName = ofd.FileName;
}
问题是,如果用户点击对话框上的取消按钮,则会继续执行一堆我的其他代码,例如打开数据库连接等,这是用户选择取消后不必要的。所以我接着尝试了:
if (ofd.ShowDialog() == DialogResult.Cancel)
{
return;
}
else if (ofd.ShowDialog() == DialogResult.OK)
{
mFileName = ofd.FileName;
}
虽然这可以防止此问题,但另一个问题出现了。如果用户选择取消,则停止。但是它会打开第二个对话框,它不应该。
我似乎只能打开一个对话框,如果用户点击取消返回,否则如果用户点击打开,则继续。谢谢。
答案 0 :(得分:1)
这里的问题是您多次致电ShowDialog()
。它返回DialogResult枚举,因此您可以将其存储在如下变量中:
DialogResult result = ofd.ShowDialog();
然后你可以多次处理它,而不必再次显示对话框:
if(result == DialogResult.OK) {
// OK!
}
else if(result == DialogResult.Cancel) {
return; // Exit function
}
else {
// Anything else you need to do
}