2015-01-04 2 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); 

나는 부모 자식 관계를 설정하는 다른 대화 상자의 소유자를 설정하는 것이 좋습니다. 부모 폼을 닫으면 자식 폼이 닫힙니다. 또한 ShowDialog 전화를 사용하는 경우 양식 주위에 using 블록을 넣으십시오.

+0

감사합니다. 두 대화 상자에 모두 추가 한 후 작동했습니다. – TMS

관련 문제