- 締切済み
VisualBasicアプリについて教えて下さい。
VisualBasicでのWindowsアプリ作成について教えてください。TreeViewで選択したフォルダのサイズを調べられるアプリを作成したい。 1週間ほど前からVisualBasicを学び始め、現在以下のようなアプリを作っています。 作り始めてみたものの、コントロールを配置後、何をどうすればよいか全くわかりません。 どなたかプログラム例を教えてくれませんか? 【内容】TreeViewでフォルダを選択→テキストボックス等に選択したフォルダのサイズが表示される 【VBのバージョン】VisualBasic2010Express ※「本で調べてください」といった回答はご遠慮下さい。ヒントやプログラム例を回答してくださる方のみ、回答をお待ちしています。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Hayashi_Trek
- ベストアンサー率44% (366/818)
フォルダを選択するのにツリービューを使わなきゃだめですか? 前の人もいっているように、ツリービューの制御は面倒です。 フォルダ選択ダイアログにしてはどうですか? http://dobon.net/vb/dotnet/form/folderdialog.html
- Yune-Kichi
- ベストアンサー率74% (465/626)
ツリービューに「フォルダ」を追加するのはややこしいです。 SHGetDesktopFolder API ( http://msdn.microsoft.com/en-us/library/windows/desktop/bb762175 ) でデスクトップのフォルダを取得して, IShellFolder の EnumObjects を経由してフォルダを列挙していくことになります。 ドライブレターの付いたドライブ以下のディレクトリでよいのであれば, 1. DriveInfo.GetDrives でドライブの一覧を取得する 2. 取得した各ドライブの RootDirectory プロパティから,ルートディレクトリの DirectoryInfo を取得し,ツリービューのルートにドライブルートを示す TreeNode を追加する。 この時,TreeNode の Tag プロパティに DirectoryInfo を設定しておく 3. 「まだ調べていない TreeNode」について,Tag プロパティに設定した DirectoryInfo の EnumerateDirectories メソッドを呼び出し,ディレクトリを列挙する。 また,列挙した時にそのディレクトリを表す TreeNode を追加し, Tag プロパティに DirectoryInfo を追加しておく 4. 「まだ調べていない TreeNode」がなくなるまで3を繰り返す となります。 再帰を使ったり,Queue(Of TreeNode) や Stack(Of TreeNode) などの構造を使う必要があるため, 最初はディレクトリを列挙するだけのコンソールアプリケーションを作ってみた方がよいかもしれません。 # "C:\PerfLogs" など,昇格済みAdministrators権限がいるディレクトリがあるため,try-catchを必要とします。 ちなみに,EnumerateDirectories の第二引数に SearchOption.AllDirectories を指定すると,サブディレクトリを巡回してくれるのですが, これをするとツリービューの生成が大変になるため,今回の目的ではお薦めしません。 で,VB のバージョンで#1さんが勘違いされているようなので……。 > VisualBasic 2010を使っているのなら、正確にはVisualBasicじゃなくてVisualBasic .NET(VB.NET)ですね。 製品名 Visual Basic 2010 に使われる言語は Visual Basic 10.0 です。 .NET が製品名につくのは Visual Basic.NET および Visual Basic.NET 2003 の場合のみです。 当時のドキュメントを見ると,言語に .NET は元々つきません。 e.g.) http://msdn.microsoft.com/ja-jp/library/aa984213(v=vs.71).aspx > 単にVisualBasicと呼ぶ場合は、VisualBasic 6.0までのバージョンを指します。 単に Visual Basic と呼ぶ場合は,6.0以前も7.0以降もすべてのバージョンを指します。 現在出される Microsoft の公式の資料で Visual Basic とだけ書いてあった場合,通常 7.0 以降の.NET Framework 対応のものを指します。 # 6.0に関しては,明示的にバージョンが書かれます。古い資料では .NET を付けて区別しているものもありますが。
- ariseru
- ベストアンサー率56% (928/1657)
>【VBのバージョン】VisualBasic2010Express VisualBasic 2010を使っているのなら、正確にはVisualBasicじゃなくてVisualBasic .NET(VB.NET)ですね。 単にVisualBasicと呼ぶ場合は、VisualBasic 6.0までのバージョンを指します。 >TreeViewでフォルダを選択→テキストボックス等に選択したフォルダのサイズが表示される フォルダのサイズをいきなり取得する関数等はありません。 そのため、フォルダ内のファイルやサブフォルダの一覧を取得して、その1つ1つの容量を調べて合計していくという作業を全ファイル分だけ繰り返す必要があります。 http://dobon.net/vb/dotnet/file/foldersize.html プログラム例としては上記がほぼそのまま使えるはずです。 http://dobon.net/vb/dotnet/index.html 上記のサイトはそれ以外の色々なプログラム例や関数・プロパティの使い方を記載していますので一通り目を通しておくと参考になりますよ。
補足
ご回答ありがとうございます。 こちらの説明が足りていませんでしたが、現在、以下サイトに記載してあるアプリを作成しております。 http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard25.htm >ツリービューに「フォルダ」を追加するのはややこしいです。 この場合、TreeViewにフォルダを表示させるところまではできているのですが、さらに追加する作業は必要なのでしょうか?表示してあるフォルダを選択し、サイズ確認を行いたいと考えています。