[C#]ファイルのパス

画像ファイルを読み込んでFormに貼り付ける程度のサンプルプログラムって、WEB上に散見されるものはJPGファイルやBMPファイルのパスを指定して読み込んでいる。

絶対パスで指定すると、プロジェクトファイルを他の環境で動かそうとするとマズーだし、実行ファイルと同じとこに画像ファイルをもっていけばファイル名だけ指定すればいいのだが、それだとDebug版、Release版、○○版と作っていくたびにそのフォルダにコピーしないといけないので、めんどくさい。

どうしてもファイル名直読みでやるなら、以下のような方法が比較的楽かもしれない。


PictureBox p = new PictureBox();
p.Image = System.Drawing.Image.FromFile(System.Environment.CurrentDirectory + @"\..\..\1.jpg");

たいていプロジェクトのディレクトリ構成は以下のようになっているので、


プロジェクトルートフォルダ
|
+--bin
|
+--Debug
| |
| +--*.exe
|
+--Release
|
+--*.exe
カレントフォルダから、2つ上のプロジェクトルートフォルダに画像ファイルを置いておくようにしておけば、大体間違いはない。

んが、こんなことしたら、実行ファイルのパスから2つ上のフォルダに画像ファイルが常にないといけないことになるので、もしこれを配布するようになった際には、変なディレクトリ構成になってしまう。

まぁそれでも、できないことはないし、カレントフォルダを探して、なかったら、2つ上のフォルダを見に行くっていうようにすれば、結構実用に耐えれると思うけど、かっこ悪いので、何か他の方法を考えなければならない。続く・・