В моем событии Form_Load формы Windows я хочу показать 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;
}
}
}
Когда я вхожу в него, строка dialog.ShowDialog () достигается во второй раз, а затем ничего не происходит. Диалог не появляется, и отладчик не двигается дальше. Это просто останавливается. Работает отлично с первого раза, а не со второго. Я даже попытался просто скопировать весь блок используя и вставить его сразу после первого, и происходит то же самое. Диалог отображается только один раз.
Что мне нужно сделать, чтобы показать FolderBrowserDialog более одного раза?
Решение:
Передача 'this' в ShowDialog устранила мою проблему. Я также переместил использование за пределы цикла while, чтобы избежать ненужного повторного создания диалога.