etc2017-08-09C#でサブフォルダをリストアップC#前回に続いて、任意のフォルダの直下にあるサブフォルダ名をリストアップするツールについて、備忘録としてメモしておきたいと思います。プログラム初心者ならではの全くスマートではない見苦しいコードになってるのではと思うので、そのあたりご注意ください。ツールの外観は下図のような感じで、上段のテキストボックスにフォルダのパスを入力してEnterを押すか、またはフォルダやファイルをツール上へドラッグ&ドロップすることで下段の「サブフォルダリスト」内にサブフォルダ名をずらずらっとリストアップします。実装したものここで実装した内容は以下になります。・フォルダパスから直下のサブフォルダ名を取得してリストアップするメソッド・パスを入力してEnterキー入力でリストアップを実行する・ファイルかフォルダをドラッグ&ドロップするとリストアップを実行する1つずつ見ていきます。パスのややこしい部分ですが、ファイルパスとフォルダパスの扱いを明示的に分けたかったので変数を2つ用意しました。ファイルかフォルダか判定してフォルダパスを取得するメソッド次に、あるパスがファイルかフォルダかを判定して、どちらの場合でもフォルダのパスを取得するよう記述したメソッドが下記です。filePath;}}「File.Exists」「Directory.Exists」を使うことで、パス先がファイルなのかフォルダなのか簡単に判定できるようです。便利!それから、パスの取得周りはルールがちょっとややこしいです。こちらの記事を参考にしました。VB.NETこちらの一覧表を見ると分かりますが、現在のフォルダ名(上記サイトの例だと"sub"がそれにあたる)を取得するには、フォルダパスに対して「Path.GetFileName」で行うことになるかと思います。ドラッグ&ドロップで入力したものがファイルだった場合に、ファイルパスに対して「Path.GetDirectoryName」でフォルダパスを得ています。フォルダパスからサブフォルダ名を取得してリストアップするメソッド今回の要となる、サブフォルダをリストアップするメソッドがこちら。"\r\n");}}先ほどの判定メソッドで得たフォルダパスを利用して、そのフォルダ直下のサブフォルダ名を「Directory.GetDirectories」で取得して配列に代入しています。こちらの記事を参考にさせて頂きました。VB.NETその後にfor分で1つずつテキストボックスに改行しながら追記していきます。パスを入力してEnterキー入力でリストアップを実行するまず探すきっかけとなるパスをどう取得するかですが、今回は手動での入力とドラッグ&ドロップに両対応することにしました。専用のテキストボックスにパスを手動で入力してEnterキーを押した時の挙動がこちら。よる全選択を記述しています。Enterキーによる実行もKeyDownイベントなので、こちらも平行して記述します。テキストボックスに入力したパス先にフォルダがあるか判定してから、最初に解説したメソッド2つを実行します。ここはとてもシンプルです。フォルダと判定できなかった場合はメッセージボックスを表示します。最後にドラッグ&ドロップされたフォルダ(またはファイル)からパスを取得した時の挙動がこちらになります。multiPass[0];//ファイルかフォルダかを判定してフォルダパスを取得determine();//フォルダパスからサブフォルダをリストアップするlistUp();}ドラッグ&ドロップの対応はこちらの記事を参考にさせて頂きました。VB.NET他にもいくつかのサイトを参考にしましたが、この形がお約束のようで、ドラッグ時のウインドウ上部への侵入時の挙動と、ドロップ時のふたつの挙動がセットになるようです。複数のファイルがドロップされた時のために、配列に代入するのもお約束のようです。して得たパスに対して、最初に解説したメソッド2つを実行します。プロジェクトデータと実行ファイルGoogleドライブにアップしました。ライセンスはMITです。ドライブbinフォルダの中にexeが入っています。TaskQuest<実装編>「TasukQuest」をどうやって作ったかのメモ書きの続きです。)連絡先moko.vfx★gmail.comお気軽にご連絡くださいはてなブログをはじめよう!moko_03_25さんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。