none
エクスプローラ風のTreeViewの作り方 RRS feed

すべての返信

  • >エクスプローラ風のTreeViewの作り方を教えてください。

    エクスプローラ風のTreeViewのなにがわかりませんか?

    ディレクトリの取得方法?

    おれおれTreeViewのつくりかた?

    #全部とか言うのはなしの方向でおねがいします。

    2006年8月22日 14:58
  • 1から10まで全部ですか?
    2006年8月22日 14:59
  • 全部ではありません。

    コードからのノードの追加、削除 ディレクトリの取得方法は、だいたい理解しているつもり? です。

     現在、実験的に作成しているのは、ルートに特定のフォルダを登録し、

    その子ノードのサブフォルダをぶら下げていき、

    選択されたノードのAfterSelectイベントの引数eを使いe.Node.FullPathで、

    フォルダまでのフルパスを取得しそのフォルダにあるファイルを取得するという単純なものです。

     私がやりたいのは、エクスプローラのような

    一番上(ルートノード)にデスクトップがあり、その下にマイドキュメント、マイコンピュータ、マイネットワーク等が、

    ぶら下がっているやつです。

    この場合、ルートノードにデスクトップがありこの方法が使えません。

    根本的に方法が違うのでしょうか?

    ここで回答されている方から見れば、素人同然です。

    以上です。よろしくお願いします。

     

    2006年8月23日 15:13
  • デスクトップはGetSpecialFolderで取得可能ですよね。

    ただあの中に出てくるマイコンピュータなどはレジストリから値をとったりしているはずなので、そのあたりの動きを調査するregmonとか詳しいサイトとかをあたって実装するしかないかなー。

    一発でという方法は存在しません。

    2006年8月23日 16:32
  • デスクトップや、マイコンピュータなどは、仮想フォルダと呼ばれる、オブジェクトです(実体があるものもありますが通常はありません)。

    これらを扱う場合は、通常のパス情報ではなく(C:\Windowsなどではなく)、IShellFolder オブジェクトと、ITEMIDLIST という可変長構造体配列を扱う必要があります。

    さらに、ツリーにして常時表示とする場合は、これらの操作に加えて、フォルダの増減や、ドライブの増減などにも対応する必要があります。

    これらの機能の殆どは、残念ながら現在の .NET Framework 上では用意されていないため、必要に応じて Unmanaged な世界で操作するということになります。

    さらに、GetSpecialFolder では、物理パスを持つものの一部しか取得できないため、マイコンピュータなどは取り出せません。

    ちなみに、マイコンピュータにアクセスしたい場合は、SHGetSpecialFolderLoation という APIを使います。

     

    2006年8月24日 3:18
  • なんだか難しそうですね。今の私ではとても無理みたいです。

    とりあえず、http://www.sysinternals.com でレジストリ モニタリングツール REGMONを

    入手しました。

    これから詳しいサイトをいろいろ調べて、こつこつとやって行きたいと思います。

    ありがとうございました。

     

    2006年8月24日 12:26
  • 一発、とまではいかないのですが、シェルインタフェースを使うことで比較的容易にエクスプローラと同じTreeViewを実装できます。以下のサイトにC#で実装した例があるので参考にしてみてください。

    http://www.codeproject.com/cs/miscctrl/ExplorerTreeView.asp

    コンポーネント化されているので、再利用するだけならVBでも簡単に使えると思います。

     

    2006年8月24日 13:41