C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

ファイルエクスプローラーのコンポーネントは /とっちゃん (24/01/18(Thu) 13:37) #102866
Re[1]: ファイルエクスプローラーのコンポーネントは /とっちゃん (24/01/18(Thu) 21:09) #102867
  └ Re[2]: ファイルエクスプローラーのコンポーネントは /とっちゃん2 (24/01/19(Fri) 21:04) #102873
    ├ Re[3]: ファイルエクスプローラーのコンポーネントは /Azulean (24/01/19(Fri) 21:50) #102874
    ├ Re[3]: ファイルエクスプローラーのコンポーネントは /kiku (24/01/22(Mon) 09:07) #102877
    └ Re[3]: ファイルエクスプローラーのコンポーネントは /とっちゃん (24/01/22(Mon) 12:00) #102878
      └ Re[4]: ファイルエクスプローラーのコンポーネントは /とっちゃん2 (24/01/22(Mon) 21:09) #102881
        └ Re[5]: ファイルエクスプローラーのコンポーネントは /とっちゃん2 (24/01/25(Thu) 07:19) #102890 解決済み


親記事 / ▼[ 102867 ]
■102866 / 親階層)  ファイルエクスプローラーのコンポーネントは
□投稿者/ とっちゃん (812回)-(2024/01/18(Thu) 13:37:05)

分類:[VB.NET/VB2005 以降] 

Visual Studio2022のVB.NETで開発をしています。(.NET6)

WindowsアプリのForm上にエクスプローラのようなフォルダ・ファイルの
リストをアイコン付きで表示する枠を設けたく、従来はExpTreeLibを
用いていましたが、ExpTreeLibは.NET Framework対応で.NET6向けではありません。

.NET6で使用可能なコンポーネントを探してみましたが見つけられず、
ファイルエクスプローラのようなコンポーネントはないものでしょうか。
TreeviewとListviewを用いて自前で書いてもみましたが、階層が深くファイル数も
多いと実用に耐えられない遅さとなってしまうため・・。

何かご存じの方いらっしゃいましたらご教示頂けると幸いです。

[ □ Tree ] 返信 編集キー/

▲[ 102866 ] / ▼[ 102873 ]
■102867 / 1階層)  Re[1]: ファイルエクスプローラーのコンポーネントは
□投稿者/ とっちゃん (813回)-(2024/01/18(Thu) 21:09:15)
No102866 (とっちゃん さん) に返信

ここでざっくり800以上書いてる「とっちゃん」です。
同じハンドルなんですね。
かぶったことがないので、初めてだわ。

> Visual Studio2022のVB.NETで開発をしています。(.NET6)
>
残念ながらVB使いじゃないので、あまりお役に立てることはないかもしれませんが。
それはともかくとして….NET 6 も今年の11月でEOLです。
いまから開発するなら .NET 8のを検討したほうが良いかもしれません。


とはいえ、同名のよしみということで。

> WindowsアプリのForm上にエクスプローラのようなフォルダ・ファイルの
> リストをアイコン付きで表示する枠を設けたく、従来はExpTreeLibを
> 用いていましたが、ExpTreeLibは.NET Framework対応で.NET6向けではありません。
>
nuget に一つしかないので、これですかね?
https://www.nuget.org/packages/ExpTreeLib

> .NET6で使用可能なコンポーネントを探してみましたが見つけられず、
> ファイルエクスプローラのようなコンポーネントはないものでしょうか。

シェルのフォルダツリーや、リストって .NET/.NET Framework 向けのライブラリって見かけないですね。
ちょっと検索した範囲では見つかりませんでした(うまくマッチするキーワードがあれば行けそうですが難しい…)。


> TreeviewとListviewを用いて自前で書いてもみましたが、階層が深くファイル数も
> 多いと実用に耐えられない遅さとなってしまうため・・。
>
完全自作でしょうか?

もし、見つからないようなら、今まで使っていた ExpTreeLib を自分で移植するほうがいいかもしれません。


VS2022 の機能拡張に「.NET Upgrade Assistant」というものがあります。
https://learn.microsoft.com/ja-jp/dotnet/core/porting/upgrade-assistant-overview?WT.mc_id=DT-MVP-32182

このプロジェクトで実際に移行できるかわかりませんが(試してません)、もし移植する場合はこちらを試してみるとよいかと。

だめでも、ソースコードを直接取り込んでくることで使えるのではないかな?と思います。

[ 親 102866 / □ Tree ] 返信 編集キー/

▲[ 102867 ] / ▼[ 102874 ] ▼[ 102877 ] ▼[ 102878 ]
■102873 / 2階層)  Re[2]: ファイルエクスプローラーのコンポーネントは
□投稿者/ とっちゃん2 (1回)-(2024/01/19(Fri) 21:04:51)
こんばんは。返信頂きありがとうございます。
かぶっちゃったようですみません。とっちゃん2にしておきます笑。

ExpTreeLibは貼って頂いたURLのそれになります。
実はアップグレードアシスタントは試してまして、
https://www.codeproject.com/Articles/422497/ExpTreeLib-Version-3-Explorer-like-Navigation-and
ここからソースを取得しアップグレードアシスタントにかけたところ、エラーは出ずにアップグレード完了したので
nupkgに出力してWindowsFormプロジェクトにインストールして・・というところまではよかったのですが、
実際にWindowsForm上で動作させてみるとフォルダの選択箇所によってエラーが出てしまうのです。

Failed to compare two elements in the array
内部例外
NotSupportedException: No data is available for encoding 932. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method

「encoding 932」とあるので、フォルダの名称に2バイト文字があるとエラーになってるのかなと想像しますが
原因がわかったとしても自分でExpTreeLibのソースを直せるだけの知識は今はないので・・。
時間もないしな〜何か別の手立てを考えるかと思い質問をした次第です。
ファイルエクスプローラのコンポーネントってあまり使う人いないんですかね。もっとあっていいはずと思うんですが・・笑

[ 親 102866 / □ Tree ] 返信 編集キー/

▲[ 102873 ] / 返信無し
■102874 / 3階層)  Re[3]: ファイルエクスプローラーのコンポーネントは
□投稿者/ Azulean (1299回)-(2024/01/19(Fri) 21:50:25)
No102873 (とっちゃん2 さん) に返信
> 内部例外
> NotSupportedException: No data is available for encoding 932. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method

どちらかと言えば、Encoding クラスの仕様の変化というところかと思います。
古い記事なのでパッケージのバージョンは適宜読み替えてください。

https://qiita.com/sugasaki/items/0639ea9ca07f1ba7a9e0
[ 親 102866 / □ Tree ] 返信 編集キー/

▲[ 102873 ] / 返信無し
■102877 / 3階層)  Re[3]: ファイルエクスプローラーのコンポーネントは
□投稿者/ kiku (397回)-(2024/01/22(Mon) 09:07:30)
No102873 (とっちゃん2 さん) に返信
> 原因がわかったとしても自分でExpTreeLibのソースを直せるだけの知識は今はないので・・。

知識がなくハードルが高いのであるならば、
下記にIssueを登録し、開発者の対応を待つとかでしょうか。
最終コミットが2年前なので、対応してくれるかどうかわかりませんが
やる気があればもしかすると比較的早く対応して頂けるかもしれません。
https://github.com/kaifuzi/ExpTreeLib

[ 親 102866 / □ Tree ] 返信 編集キー/

▲[ 102873 ] / ▼[ 102881 ]
■102878 / 3階層)  Re[3]: ファイルエクスプローラーのコンポーネントは
□投稿者/ とっちゃん (814回)-(2024/01/22(Mon) 12:00:00)
No102873 (とっちゃん2 さん) に返信
> こんばんは。返信頂きありがとうございます。
> かぶっちゃったようですみません。とっちゃん2にしておきます笑。
>
すいません。ありがとうございます。


エラーの詳細や、作者にお願いするならという点はすでに出てるので割愛するとして。


> ファイルエクスプローラのコンポーネントってあまり使う人いないんですかね。もっとあっていいはずと思うんですが・・笑
>
昔と違って、ファイルダイアログで十分という場面が多いのではないでしょうか?
Explorerみたいなアプリを作ろうという人も21世紀になってからはほとんど見かけないです。



今回の場合、.NET Framework から .NET への移植なのでそれなりに非互換部分もあります。
アップグレードアシスタントがピックアップしてくれればいいですが100%ではないので
引っかからない箇所も多々あります。

これらは、頑張って自分で修正するしかなく、それができないなら(技術的な問題だけとは限らない)
移行はあきらめ、.NET Framework のままでいるという選択肢をとるしかないと思います。


どのみち、GUIアプリ(Formsは特に)は、Windows 以外で動かせるものではないので、.NET Framework 4.8 に
アップグレードするというのも検討してもいいと思います。

.NET で新しく増えた仕様はVBでは使えませんし。

[ 親 102866 / □ Tree ] 返信 編集キー/

▲[ 102878 ] / ▼[ 102890 ]
■102881 / 4階層)  Re[4]: ファイルエクスプローラーのコンポーネントは
□投稿者/ とっちゃん2 (2回)-(2024/01/22(Mon) 21:09:31)
みなさま、返信頂いてまして大変ありがとうございます。
Azulean様に教示頂いた内容、そういえば.NET6に移った頃に処置したことがあったと思い出しまして
試してみましたところ、(完全ではないですが)当たりだったようです。
「NotSupportedException: No data is available for encoding 932.」・・のエラーは
出なくなり、概ねどのフォルダをクリックしても大丈夫になりました。

(完全ではない、と書いたのはExpTreeLibのプロパティ項目でStartupDirectoryがあるのですが、
この項目のいくつかの選択肢では選択すると
Failed to compare two elements in the array
とメッセージが出るのは残ったままです。)

配列の2要素の比較に失敗、て何だろと思いつつ、組み込むアプリは利用者が限られており
人数も少ない配布先なので一先ずこれで使ってみようかなと思ってます。
本当は個人的には.NET Frameworkで全然OKなんですけど笑
[ 親 102866 / □ Tree ] 返信 編集キー/

▲[ 102881 ] / 返信無し
■102890 / 5階層)  Re[5]: ファイルエクスプローラーのコンポーネントは
□投稿者/ とっちゃん2 (3回)-(2024/01/25(Thu) 07:19:38)
完全ではないですが解決とします。
返信頂きました皆様ありがとうございました。
解決済み
[ 親 102866 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -