- ベストアンサー
ツリービューで、エクスプローラー風にフォルダを辿る
ツリービューで、エクスプローラー風にフォルダをたどるプログラムサンプル例を知りたいのですが、ご存知のかたはいらっしゃいませんでしょうか。 Visual Basic 2010 Express Edition を利用しています。 参考書を何冊も読みましたが、ドライブやフォルダ情報を得ても、どうやってそれらをノードにしたら良いのか、よくわかりませんでした。 VisualBasic中学校のサンプルではややこしすぎる上、エラーが発生しました。 よろしくお願いいたいします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
どこまで「真面目に」やりたいかにもよりますが……。 本当に真面目にやるなら,フォルダはディレクトリではないため, MSDN) SHGetFolderLocation function http://msdn.microsoft.com/en-us/library/windows/desktop/bb762180.aspx を起点に MSDN) SHCreateItemFromIDList function http://msdn.microsoft.com/en-us/library/windows/desktop/bb762133.aspx でIShellItemを得て,それからフォルダやファイル等を列挙していくか, ツリービューを諦めて MSDN) INameSpaceTreeControl interface http://msdn.microsoft.com/en-us/library/windows/desktop/bb761630.aspx を使うか,となります。 # 私は後者をC#でやろうとしてP/Invokeの宣言だけで諦めました……。 Visual Basic 中学校のサンプルというのは, Site) VB サンプル集 - VB2010, VB2008, VB2005, VB.NET2003, VB.NET2002 http://homepage1.nifty.com/rucio/main/dotnet/Samples/SmpleCnt.htm にある, Site) VB フォルダツリー http://homepage1.nifty.com/rucio/main/dotnet/Samples/Sample081FolderTree.htm のことでしょうか。 非常にコンパクトなサンプルだと思いますが。 ・何が分からなかったのでしょうか ・エラーとはどういうエラーでしょうか (例外であれば,その型とエラーメッセージ) # Visual Basic 中学校には質問用の掲示板があるのですけれどね……。
お礼
なんか色々やっているうちに一応使い物になる物が出来ましたので公開いたします。 (ホントは秘密にしておきたいんですが、回答者様へのお礼です) Public Class Form1 __Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ____For Each drive As String In IO.Directory.GetLogicalDrives ______TreeView1.Nodes.Add(drive) ____Next __End Sub __Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect ____Try ______Dim oya As New IO.DirectoryInfo(TreeView1.SelectedNode.FullPath) ______If TreeView1.SelectedNode.Nodes.Count = 0 Then 'もし子ノードがなければ追加する。 ________For Each ko As IO.DirectoryInfo In oya.GetDirectories __________TreeView1.SelectedNode.Nodes.Add(ko.Name) ________Next ______End If ____Catch ex As Exception ____End Try __End Sub End Class visual basic 中学校のよりさらにわかりやすく、かつ、正しく動作するように仕上げました。 (e.node.は意味不明なのであえて使っていません。) このままでも十分使えますが、本番では、さらに改良する予定です。 Yune-Kichi様、指南していただきまして本当に有難うございました。(^^v
補足
>Site) VB フォルダツリー >http://homepage1.nifty.com/rucio/main/dotnet/Samples/Sample081FolderTree.htm >のことでしょうか。 回答有り難うございます。また、私の見ていたサンプルプログラムよりも遥かにわかりやすい例を提示してくださって、重ねて御礼申し上げます。 早速打ち込んでRUNさせたところ、以下の様なエラーメッセージが表示されて、その子ノード以下はアクセス出来ません。 http://hw001.spaaqs.ne.jp/hi-001/img/CantAccess.png http://hw001.spaaqs.ne.jp/hi-001/img/capture.png Documents and Settings の子ノードを開きたいのですが、これはできない相談なのでしょうか? p.s. 質問用掲示板があるのも気付きませんでした。こちらも活用したいと思います。