WindowsフォームのForm_Loadイベントで、FolderBrowserDialogを表示して、ユーザーがディレクトリを選択できるようにします。選択したディレクトリが有効でない場合(つまり、アプリケーションに必要な特定のファイルがない場合)、もう一度表示します。 。ただし、新しいFolderBrowserDialogを作成すると、ShowDialogを呼び出しても表示されません。
while (ValidDirectorySelected() == false && tryAgain == true)
{
using (FolderBrowserDialog dialog = new FolderBrowserDialog())
{
dialog.ShowNewFolderButton = false;
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)
{
tryAgain = false;
}
}
}
それに足を踏み入れると、2回目にdialog.ShowDialog()行に到達し、その後何も起こりません。ダイアログは表示されず、デバッガーは先に進みません。止まるだけです。最初は完全に機能しますが、2回目は機能しません。ブロックを使用してその全体をコピーし、最初のブロックの直後に貼り付けてみましたが、同じことが起こります。ダイアログは1回だけ表示されます。
FolderBrowserDialogを複数回表示するにはどうすればよいですか?
解決:
'this'をShowDialogに渡すと、問題が修正されました。また、ダイアログを不必要に再作成しないように、usingをwhileループの外側に移動しました。