Не фокусироваться на другой форме после FolderBrowserDialog.ShowDialog()

Я пытаюсь сделать выбор папки, которая показала бы ошибку, если на выбранном диске недостаточно места. Я создал специально разработанную ошибку и диалоговую форму, но есть проблема с использованием FolderBrowserDialog.

Вот мой фактический код:

frmDialog dialog = new frmDialog("Install software", "The software cannot be found. Please select the path of the executable or let the launcher install it for you.");
dialog.SetYesButtonText("Install software");
dialog.SetNoButtonText("Browse for executable...");

if (dialog.ShowDialog() == DialogResult.Yes)
{
     fbd = new FolderBrowserDialog();
     fbd.Description = "Please select where do you want to install the software!";
     DialogResult result = fbd.ShowDialog();

     if (result == DialogResult.OK) // + space checking, but I deleted it for debugging now.
     {
          frmError error = new frmError("Not enough space", "Please select a folder with at lease 22 MB of free space.");
          error.ShowDialog();
      }
}

После этого я сделаю цикл, который будет выполняться до тех пор, пока пользователь не выберет папку с достаточным пространством или не отменит выбор.

Проблема в том, что диалоговое окно с ошибкой не фокусируется. Поэтому, когда пользователь выбирает папку, FolderBrowserDialog исчезает, и в новом окне появляется диалоговое окно с сообщением об ошибке, но вместо диалогового окна с ошибкой окно Visual Studio получает фокус. Как я понял, эта проблема не существует с моими собственными формами, поэтому, если бы я изменил fdb на frmDialog, все три диалоговых окна появлялись бы с фокусом друг за другом.

1 ответ

Решение

Установите владельца диалоговых окон следующим образом:

fbd.ShowDialog( dialog );
error.ShowDialog( dialog );

Я рекомендую установить владельцев других диалогов, чтобы установить отношения родитель-потомок. Поэтому, когда вы закрываете родительскую форму, дочерние формы закрываются. А также положить using блок вокруг ваших форм, если вы используете ShowDialog звонки.

Другие вопросы по тегам