Exploer風のTreeViewの作成
IShellFolderインターフェイスを利用して、オブジェクトを取得して、TreeViewに表示する。
Exploer風のTreeViewのルートノードとなるデスクトップのノードについての情報は、
shell32.dllのSHGetDesktopFolder、SHGetSpecialFolderLocation、SHGetFileInfoから取得する。サブノードについては、IShellFolderインターフェイスのEnumObjectsメソッドを利用して取得し、SHGetFileInfoでその情報を取得する。
各ノードのシステム上のパスは、shell32.dllのSHGetPathFromIDListから取得する。
TreeViewに表示するアイコンについては、shell32.dllのSHGetFileInfoでイメージのハンドルを取得し、ツリービューのImageListに設定する。
コントロールについては、TreeViewを継承したExplorerTreeViewクラスとShell APIから取得した情報を格納するShellItemクラスを作成し、TreeNodeのTagにShellItemのインスタンスを設定するようにする。
参照
Exploer風のTreeView
http://www.codeproject.com/Articles/13097/An-quot-Explorer-Style-quot-TreeView-Control
※上記にサンプルがあります。
ExplorerTreeViewクラス
a) Event ItemSelected As ExplorerTreeView.ItemSelectedEventHandler
ツリービューのノードが選択されたときに発生する。
ExplorerTreeView.ItemSelectedEventArgsのDirectoryPathプロパティから選択されたノードのシステム上のパスを取得できる。
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/
---------------------------------------------------------