2009-03-08 12 views
0

私は、ユーザからアプリケーションディレクトリを取得する簡単な作業の上に私の頭脳を掴んだ。私はAppFolderDialogフォームを持っています。これはダイアログとして使用され、OKボタンとCancelボタン、読み込み専用のテキストボックス、ブラウズボタンがあります。ブラウズボタンは、FolderBrowserDialogを開きます。ディレクトリのブラウズとキャンセル、再試行

ユーザーが[OK]をクリックすると、選択したディレクトリに特定のファイルが含まれているかどうかを確認し、ユーザーに[キャンセル]または[再試行]メッセージボックスを表示するループが必要です。 Cancelはキャンセルをダイアログに転送してダイアログを閉じ、DialogResult.Cancelを返します。再試行では、ユーザーにディレクトリを参照する別の機会が与えられます。

今や、ダイアログ自体に[キャンセル]ボタンが必要なので、ユーザーは無効なディレクトリを選択しなくてもキャンセルできます。私はこれがすべて間違っていることを知っていますが、私はすぐに多くのことで忙しく、私の集中は撃たれます。アプリケーションでこのタスクを改善する方法についていくつか提案していただきたいと思います。

答えて

1

実際に何かをしようとするとディレクトリが存在するかどうかを確認するコードが必要です。

とにかくそのコードを持っているのを見て、私はディレクトリ選択ダイアログのチェックに気をつけません。ユーザーにディレクトリを選択させて、存在しないものを何らかの形で選択したり、アプリケーションデータなどがない場合は、エラーメッセージを表示しないようにします。結局のところ、ユーザーはあなたのアプリで完全に良いディレクトリを選択し、それを削除することができます。

1

2つのダイアログを結びつけないことをお勧めします。最初のダイアログで適切なディレクトリを取得してください。ユーザーが[OK]をクリックすると最初のダイアログが閉じられ、アプリケーションで結果が確認され、期待されるファイルが存在しない場合は、選択したディレクトリが正しくないことを知らせるエラーダイアログが表示されます。再試行のオプションを与えて、最初のダイアログを再びポップアップさせることもできます。いずれかのダイアログをキャンセルすると、単にディレクトリを選択しなかっただけです。

+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; 
    } 
関連する問題