1

这看起来很简单,但我一直试图让它正常工作,但我就是做不到。这是原始代码:

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;
}

虽然这可以防止之前的问题,但会出现另一个问题。如果用户选择取消,它将停止。但随后它将打开第二个对话框,它不应该。

我似乎不能只打开一个对话框,如果用户点击取消返回,否则如果用户点击打开,那么它会继续。谢谢。

4

1 回答 1

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
}
于 2013-11-04T07:50:36.740 回答