カスタムのOpenFileDialogの作成

「ファイルを開く」ダイアログの右側の領域(A)と下側の領域(B)に、任意にコントロールを追加する。
ファイル、フォルダ、フィルタの選択の変更イベントを受け取り、各イベントに応じて、追加した領域に描画するこができる。

openFileDialog















実装方法
実装の方法としては、以下の3つがある。

A)すべてはじめから実装する。
B)Win32APIを用いて実装する。
C)NET標準のOpenFIleDIalogをハックして、必要な機能を追加する。

A)多くの時間が必要、B)はAPIの知識が必要なため経験のない方は多くの時間が必要。
C)はWeb上に参考にできるものがあるため、比較的容易に実装ができる。

カスタムのOpenFileDialog
http://www.codeproject.com/Articles/16276/Customizing-OpenFileDialog-in-NET
※上記にサンプル等もあります。


クラス図
OpenFileDialogクラス図





















a)      CustomOpenFileDialog

「ファイルを開く」ダイアログの右側の領域と下側の領域に、任意のコントロールを追加することができるように拡張したクラス。

「ファイルを開く」ダイアログの右側の領域と下側の領域に、任意のコントロールを追加したい場合は、このクラスを継承し、CreateRightControlメソッドとCreateBottomcontrolメソッドをオーバーライドし、追加したコントロールを生成して返すようにする。デフォルトではサイズが0UseControlを生成するので、標準の「ファイルを開く」ダイアログと同等のダイアログとなる。

.NET標準のOpenFileDialogのプロパティと同等のプロパティを実装する。ただし、Windows XPスタイルの外観と動作にするため、AutoUpgradeEnabledプロはティはFalseとし、変更できないようにする。


(1)   Event FileNameChanged As PathChangedEventHandler

選択するファイル名が変更されたときに発生する。

PathChangedEventArgsPathプロパティから変更されたファイルのパスを取得することができる。

 

(2)   Event FolderNameChanged As PathChangedEventHandler

選択するフォルダ名が変更されたときに発生する。

PathChangedEventArgsPathプロパティから変更されたフォルダのパスを取得することができる。

 

(3)   FilterChanged As FilterChangedEventHandler

ファイルの種類のコンボボックスの値が変更されたときに発生する。

FilterChangedEventArgsFilterIndexプロパティから変更されたファイルの種類のコンボボックスのインデックスを取得することができる。

 

(4)   FileOk As CancelEventHandler

「開く」ボタンが押下されたときに発生する。

CancelEventArgsCancelプロパティをTrueに設定することによって、決定をキャンセルすることができる。

 

(5)   Sub ShowDialog()

既定のオーナー(現在のプロセスのメインウィンドウのハンドル)を使用して、ダイアログを表示する。

 

(6)   Sub ShowDialog(

    ByVal owner As IWin32Window

)

指定したオーナーを使用して、ダイアログを表示する。

 

(7)   Protected Overridable Function CreateRightControl() As Control

右側に表示するコントロールを生成して返す。

 

(8)   Protected Overridable Function CreateBottomControl() As Control

下側に表示するコントロールを生成して返す。

 

a)      WindowWrapper

ダイアログを表示するときの既定のオーナーとしてのハンドルを保持する。

 

b)      OpenFileDialogWrapper

.NET標準のOpenFileDialogのハンドルを保持し、WndProcメソッドで、各ウィンドウメッセージを取得し、拡張に必要な処理を行う。

 

c)       MSOpenFileDialogWrapper

.NET標準のOpenFileDialogのクライアント部分のハンドルを保持し、WndProcメソッドで、ファイル名変更等のウィンドウメッセージを取得し、通知する。

 


1.      使用例

CustomOpenFileDialogクラスを継承し、OpenFileDialogWithImagePreviewクラスを作成し、以下のようなイメージプレビューつきの「ファイルを開く」ダイアログを作成する。

CreateRightControlで、選択された画像ファイルを表示するコントロールを作成し、CreateBottomControlで、「アニメーションとして開く」チェックボックスを表示するコントロールを作成する。
 

example













----------------------------------------------------------
VB C# .NET Freamworkの備忘録
http://ari-it.doorblog.jp/
javascriptの備忘録
http://ari-java.doorblog.jp/
---------------------------------------------------------