|
.NET TIPS [フォルダの参照]ダイアログを使用するには?デジタルアドバンテージ2003/08/22 |
![]() |
|
|
|
Windowsには、ユーザーにフォルダを選択させるための次の図のような[フォルダの参照]ダイアログが用意されている。これはコモン・ダイアログ・ボックスの1つである。
![]() |
| [フォルダの参照]ダイアログ |
| このダイアログ・ボックスではユーザーにフォルダを選択させることができる。画面はWindows XPのもの。Windows 2000ではデザインが少し異なる。 |
.NET Framework 1.1では、この[フォルダの参照]ダイアログの利用が正式にサポートされた。これにはFolderBrowserDialogクラス(System.Windows.Forms名前空間)を使用する*1。
使い方は簡単で、基本的にはFolderBrowserDialogクラスのインスタンスを作成し、ShowDialogメソッドを呼び出せばよい。
FolderBrowserDialog fbd = new FolderBrowserDialog();
DialogResult dr = fbd.ShowDialog();
ShowDialogメソッドの戻り値はDialogResult列挙体(System.Windows.Forms名前空間)の値で、クリックされたボタンによりDialogResult.OKかDialogResult.Cancelとなる。[OK]ボタンがクリックされた場合には、実際に選択されたフォルダのフルパスをSelectedPathプロパティから取得することができる。またDescriptionプロパティには、あらかじめダイアログ・ボックス上部に表示されるメッセージを設定することができる。
次のサンプル・プログラムは、冒頭で示した[フォルダの参照]ダイアログを表示し、選択されたフォルダを画面に表示する。通常はWindowsアプリケーションで使用されるものだが、このようにコンソール・アプリケーションからも利用できる。
|
|
| [フォルダの参照]ダイアログを表示するC#のサンプル・プログラム(folderdlg1.cs) | |
より詳細な設定
上記のサンプル・プログラムでは、説明テキスト以外すべてデフォルトの設定を利用しているが、あらかじめ各種プロパティを設定することにより、表示される項目を変更することができる。
まず、RootFolderプロパティではツリー表示されるルート部分のフォルダを設定できる。ここには次のようにEnvironment.SpecialFolder列挙体(System名前空間)の値を1つ設定する。この列挙体については「TIPS:Windowsのシステム・フォルダのパスを取得するには?」で解説しているので参照していただきたい。
fbd.RootFolder = Environment.SpecialFolder.MyComputer;
デフォルトの値はEnvironment.SpecialFolder.Desktop(デスクトップ・フォルダ)である。ここには文字列で任意のディレクトリを指定することはできない。これは内部で呼び出しているWin32 APIであるSHBrowseForFolder関数の仕様によるものだ。
SelectedPathプロパティは、選択されたフォルダのフルパスを得るためのものだが、あらかじめディレクトリのフルパスを設定しておけば、ツリーが展開され、そのフォルダが選択された状態でダイアログ・ボックスが表示される。
また、ShowNewFolderButtonプロパティをfalseに設定することにより、画面下部に表示される[新しいフォルダの作成]ボタンを非表示にできる。
次のサンプル・プログラムはこれらのプロパティを設定して[フォルダの参照]ダイアログを表示する。
|
|
| 各プロパティを設定した[フォルダの参照]ダイアログを表示するC#のサンプル・プログラム(folderdlg2.cs) | |
このサンプル・プログラムを実行すると次のような[フォルダの参照]ダイアログが表示される。
![]() |
| サンプル・プログラムの実行結果 |
| ルートとなるフォルダを「マイ・コンピュータ」に、選択されたフォルダを「c:\Inetpub\wwwroot」に、[新しいフォルダの作成]ボタンを非表示に設定している。 |
なお、Windows 2000ではShowNewFolderButtonプロパティをfalseに設定しても[新しいフォルダの作成]ボタンが表示されたままになるようだ。これはクラス・ライブラリのバグだと思われる。![]()
| *1 このクラスは.NET Framework 1.1でのみサポートされる。.NET Framework 1.0には含まれていない。FolderNameEditorクラス(System.Windows.Forms.Design名前空間)の入れ子クラスであるFolderBrowserクラスを利用しても同様に[フォルダの参照]ダイアログを表示することはできるが、リファレンス・マニュアルにもあるように、このクラスは.NET Framework内部での使用を目的とするものであるため、実システムでは使用すべきでないだろう。.NET Framework 1.0でこのダイアログ・ボックスを使いたい場合には、これらのクラスが内部で使用しているWin32 APIであるSHBrowseForFolder関数を呼び出して利用することができる。この方法に関しては「マイクロソフト サポート技術情報 - 306285:[HOW TO] C# を使用して [フォルダの参照] コモン ダイアログ ボックスをラップするマネージ コンポーネントを実装する方法」を参照していただきたい。 |
| カテゴリ:Windowsフォーム 処理対象:ダイアログ・ボックス 使用ライブラリ:FolderBrowserDialogクラス(System.Windows.Forms名前空間) 使用ライブラリ:DialogResult列挙体(System.Windows.Forms名前空間) 使用ライブラリ:Environment.SpecialFolder列挙体(System名前空間) 関連TIPS:Windowsのシステム・フォルダのパスを取得するには? |
|
||||||||||||||||||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -




