Exploer風のTreeViewの作成


 IShellFolderインターフェイスを利用して、オブジェクトを取得して、TreeViewに表示する。

Exploer風のTreeViewのルートノードとなるデスクトップのノードについての情報は、
shell32.dllSHGetDesktopFolderSHGetSpecialFolderLocationSHGetFileInfoから取得する。サブノードについては、IShellFolderインターフェイスのEnumObjectsメソッドを利用して取得し、SHGetFileInfoでその情報を取得する。
 

各ノードのシステム上のパスは、shell32.dllSHGetPathFromIDListから取得する。

TreeViewに表示するアイコンについては、shell32.dllSHGetFileInfoでイメージのハンドルを取得し、ツリービューのImageListに設定する。

 

コントロールについては、TreeViewを継承したExplorerTreeViewクラスとShell APIから取得した情報を格納するShellItemクラスを作成し、TreeNodeTagShellItemのインスタンスを設定するようにする。


参照
Exploer風の
TreeView
http://www.codeproject.com/Articles/13097/An-quot-Explorer-Style-quot-TreeView-Control
※上記にサンプルがあります。


ツリービュー
ExplorerTreeViewクラス

a)      Event ItemSelected As ExplorerTreeView.ItemSelectedEventHandler

ツリービューのノードが選択されたときに発生する。

ExplorerTreeView.ItemSelectedEventArgsDirectoryPathプロパティから選択されたノードのシステム上のパスを取得できる。

 

b)      Sub LoadRootNodes()

ルートノードとその子ノードを取得し、ルートノードを開いて表示する。

ExplorerTreeViewクラスのインスタンスの生成時にはノードの読み込みは行われないため、ノードを読み込む場合は、明示的にこのメソッドを呼び出す。ただし、すでにノードが追加されている場合は、すべてクリアしてからノードが読み込まれる。

 

c)       Sub SetSelectedDirectoryPath(

    ByVal selectedDirectoryPath As String

)

指定したディレクトリのパスに一致するノードを選択する。

指定したディレクトリが存在しない場合は、ルートノードが選択される。


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