0

我的程序需要向用户显示一个对话框,提示用户选择保存文件夹,然后显示一个是-否按钮消息框,要求用户确认他们希望继续。

这是我的代码:

/* Wait until user has selected a save folder */
do { } while (sSaveFolder == null);

/* Cancel operation if user clicks on cancel when in folder selection window */
if (sSaveFolder == "<cancel>")
{
    worker.ReportProgress(0, "Operation Cancelled\r\n\r\n**********\r\n");
    return;
}

/* Check for confirmation */
if (MessageBox.Show("Please confirm whether or not to continue.", "Do you wish to continue?", MessageBoxButtons.YesNo) == DialogResult.No)
{
    worker.ReportProgress(0, "Operation Cancelled\r\n\r\n**********\r\n");
    return;
}

我遇到的问题是我可以运行一次,单击否,工作线程终止。但是,如果我再次单击该按钮以运行工作线程,我会在弹出保存文件夹对话框的同时弹出消息框 - 这显然是有问题的。那么有谁知道为什么会发生这种情况以及如何解决它?

我通过将消息框移动到保存文件夹对话框之前找到了解决我的特定问题的方法,但是,由于这是一个奇怪的问题,我想我会在将来再次询问它。

提前致谢 :)

4

1 回答 1

3

我在您的代码中看不到 sSaveFolder 的值将被重置的任何地方。

由于您正在重用同一个对象,因此可能仍会设置先前的值,因此 do...while 完成得非常快,因此会显示消息框。

在显示对话框之前重置 sSaveFolder 的值应该可以解决您的问题。

于 2012-04-23T15:51:46.553 回答