0

私のプログラムは、保存フォルダーを選択するようにユーザーに促すダイアログ ボックスをユーザーに表示し、続行するかどうかをユーザーに確認するための Yes-No ボタン messageBox を表示する必要があります。

これは私のコードです:

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

私が得ている問題は、これを 1 回実行して [いいえ] をクリックすると、ワーカー スレッドが終了することです。しかし、ボタンをクリックしてワーカー スレッドを再度実行すると、フォルダーの保存ダイアログ ボックスと同時にメッセージ ボックスがポップアップ表示されます。これは明らかな理由で問題があります。では、なぜこれが起こっているのか、そしてそれを解決する方法を知っている人はいますか?

メッセージボックスを保存フォルダーダイアログボックスの前に移動することで、特定の問題の回避策を見つけましたが、これは奇妙な問題であるため、将来再び発生することについて質問すると思いました.

前もって感謝します :)

4

1 に答える 1

3

sSaveFolder の値がリセットされるコードのどこにも表示されません。

同じオブジェクトを再利用しているため、以前の値がまだ設定されている可能性があるため、do...while は非常に迅速に完了し、メッセージボックスが表示されます。

ダイアログを表示する前に sSaveFolder の値をリセットすると、問題が解決するはずです。

于 2012-04-23T15:51:46.553 に答える