2009-03-08 2 views
0

사용자로부터 응용 프로그램 디렉토리를 가져 오는 간단한 작업을 통해 두뇌를 잡았습니다. 대화 상자로 사용하는 AppFolderDialog 폼이 있는데, 여기에는 확인 및 취소 단추, 읽기 전용 텍스트 상자 및 찾아보기 단추가 있습니다. 찾아보기 버튼은 FolderBrowserDialog를 엽니 다.디렉토리 찾아보기 및 취소, 다시 시도

사용자가 확인을 클릭하면 선택한 디렉토리에 특정 파일이 포함되어 있는지 확인하고 사용자에게 취소 또는 다시 시도 메시지 상자를 제공하는 루프가 필요합니다. Cancel은 취소를 Dialog에 전달하여 DialogResult.Cancel을 닫습니다. 다시 시도는 사용자에게 디렉토리를 찾아 볼 수있는 또 다른 기회를 제공합니다.

이제는 대화 상자에 취소 버튼이 있어야 사용자가 잘못된 디렉토리를 선택하지 않고 취소 할 수 있습니다. 나는이 모든 것이 잘못되었음을 안다. 그러나 나는 즉시 여러 가지로 바쁘다. 그리고 나는 집중력을 발휘한다. 응용 프로그램에서이 작업을 향상시키는 방법에 대한 제안을 주시면 감사하겠습니다.

답변

1

실제로 뭔가를 시도 할 때 디렉터리가 있는지 확인하는 코드가 있어야합니다.

어쨌든이 코드가 있어야하므로 디렉토리 선택 대화 상자를 확인하지 않아도됩니다. 사용자가 디렉토리를 선택하게하고, 존재하지 않는 앱을 ​​선택하거나 앱 데이터가없는 경우 오류 메시지를 표시하지 않습니다. 결국 사용자는 앱에서 완벽하게 좋은 디렉토리를 선택한 다음 삭제할 수 있습니다.

1

두 개의 대화 상자를 함께 묶지 않는 것이 좋습니다. 첫 번째 대화 상자에서 적절한 디렉토리를 얻으십시오. 사용자가 확인을 클릭하면 첫 번째 대화 상자가 닫히고 응용 프로그램에서 결과를 확인하고 예상 파일이없는 경우 선택한 디렉토리가 올바르지 않다는 오류 대화 상자가 표시됩니다. 다시 시도 할 수있는 옵션을 제공 할 수 있습니다. 그러면 다시 첫 번째 대화 상자가 나타납니다. 두 대화 상자 중 하나를 취소하면 단순히 디렉토리를 선택하지 않은 상태가됩니다.

+0

나는 당신의 생각의 기차가 마음에 든다. 나는 내 자신의 대화조차 사용하지 않을 것을 영감으로 생각한다. 동일한 재시도 루프를 사용하여 사용자가 기본 양식에서 폴더를 탐색하게하십시오. – ProfK

0

이게 당신이 찾는거야?

private string GetPathFromUser() 
    { 
     FolderBrowserDialog dialog = new FolderBrowserDialog(); 
     while (dialog.ShowDialog() == DialogResult.OK) 
     { 
      // Do your validation here 
      bool pathIsGood = false; 

      if (pathIsGood) 
      { 
       return dialog.SelectedPath; 
      } 
      else 
      { 
       DialogResult cancelRetry = MessageBox.Show("Directory is not valid becuase bla..", "", MessageBoxButtons.RetryCancel); 
       if (cancelRetry == DialogResult.Cancel) break; 
      } 
     } 
     return null; 
    } 
관련 문제