2015-01-04 4 views
-1

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

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

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, все три диалога появятся с фокусом друг за другом.

+0

Вы хотите, чтобы окна 'FolderBrowserDialog' открывались и отображались диалоговые окна ошибок? – dotctor

ответ

2

Установить владелец диалогов, как это:

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

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

+0

Спасибо, после добавления в оба диалога, он сработал. – TMS

Смежные вопросы