2008-09-05 10 views
26

C#.NET 3.5アプリケーション(WinFormsとWPFが混在する)では、データの読み込みを行うフォルダをユーザーに選択させたいと考えています。現時点では、それはSystem.Windows.Forms.FolderBrowserDialogを使用していますが、それは少し変です。主に、パスを入力することができないため(UNCパスを入力するのではなく、ネットワークドライブをマップする必要があります).NET 3.5でフォルダを選択する

System.Windows.Forms.OpenFileDialogのようなものがほしいですが、ファイルの代わりにフォルダが必要です。

代わりに何を使用できますか? WinFormsまたはWPFソリューションは問題ありませんが、回避することができれば、Windows APIへのPInvokeをしないことをお勧めします。

答えて

36

自分で作成しないでください!それは終わった。 FolderBrowserDialogEx - は、組み込みのFolderBrowserDialogの再利用可能な派生物を使用できます。これにより、UNCパスでもパスを入力できます。コンピュータまたはプリンタをブラウズすることもできます。組み込みのFBDと同じように動作しますが、より良い...

完全なソースコード。無料。 MS-Publicライセンス。

FolderBrowserDialogEx

それを使用するコード:

var dlg1 = new Ionic.Utils.FolderBrowserDialogEx(); 
dlg1.Description = "Select a folder to extract to:"; 
dlg1.ShowNewFolderButton = true; 
dlg1.ShowEditBox = true; 
//dlg1.NewStyle = false; 
dlg1.SelectedPath = txtExtractDirectory.Text; 
dlg1.ShowFullPathInEditBox = true; 
dlg1.RootFolder = System.Environment.SpecialFolder.MyComputer; 

// Show the FolderBrowserDialog. 
DialogResult result = dlg1.ShowDialog(); 
if (result == DialogResult.OK) 
{ 
    txtExtractDirectory.Text = dlg1.SelectedPath; 
} 
+30

Ahhhh!明るいピンク!私の目...私の貧しい目... – dthrasher

+11

私の娘はそれをしました... – Cheeso

+6

それは普通の言い訳ではありませんか? ;-) – Joey

1

フォルダ選択のためのFolderBrowserDialog以外のダイアログボックスはありません。このダイアログを自分で作成するか、PInvokeを使用する必要があります。

0

これまでのところ、my identical questionへの応答の欠如に基づいて、私は自分のダイアログを最初からロールバックすると答えていると思います。

VB6の一般的なダイアログボックスのサブクラス化については、ここを参照してください。これは解決策の一部であると思われますが、ダイアログボックスで選択していると思われる内容は変更されません。 PInvokeや他のいくつかのトリックを使って.NETを介して行うことが可能ですが、私はそれを行うコードをまだ見ていません。

私はそれが可能だとVisual StudioはVS 2003

ので、それを行っているので、それはVistaの固有ではありませんを知っここで誰かがあなたや私のいずれかの答えを期待しています!

0

私はa working solutionleetNightShadeによってthis answerを発見した同様のソリューションを検索する時間後。

私はこの解決策を他のどのものよりも優れていると思う3つのことがあります。

  1. 使いやすいです。 プロジェクトでは、2つのファイル(いずれにも組み合わせることができます)のみを含める必要があります。
  2. XPまたはそれ以前のシステムで使用された場合、標準FolderBrowserDialogに戻ります。
  3. 著者は、あなたが合っていると思われる目的のためにコードを使用する許可を与えます。

    コードを自由に取って実行するようなライセンスはありません。

コードhereをダウンロードしてください。

関連する問題