.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」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|