My program needs to display a dialog box to the user, which prompts the user to select the save folder, and then displays a Yes-No buttons messageBox to ask the user to confirm that they wish to continue.
This is my code:
/* 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;
}
The problem I’m getting is that I can run this once, click No and the worker thread terminates. But, if I click on the button to run the worker thread again, I get the message box popping up at the same time as the save folder dialog box – which, for obvious reasons is problematic. So does anyone know why this might be happening and how to solve it?
I found a work around to my particular problem by moving the message box to before the save folder dialog box but, as this is a weird problem, I thought I’d ask about it crops up again in the future.
Thanks in advance 🙂
I cannot see anywhere in your code where the value of sSaveFolder would be reset.
Since you are reusing the same object the previous value may still be set, so the do…while completes very quickly and therefore the messagebox is displayed.
Resetting the value of sSaveFolder before you display the dialog should fix your problem.