Visual Basicで画像の上書き保存

Visual Basicの画像関連でのエラー。品物のリストをデータベースに格納する画面を作っていたのですが、画像ファイルはデータベースに格納せずに所定のフォルダに品物のナンバーをファイル名にして保存するようにしていました。

ListBoxで品物を選択すると、画像ファイルがあればPictureBox1に表示する。新しい画像を登録するときには参照ボタンをクリックして画像を選択します。登録ボタンを押すと、PictureBox1の画像を所定のフォルダへ保存します。

ところが、ある条件でエラーが出ます。No.4の品物を表示し、画像を変えて4番の情報を更新するなど、画像を表示して同じ番号で上書きする時だけGDI+がどうとかエラーが出ます。

ん?なんか、どこかで読んだ覚えがあるぞ。記憶をたどりに「vb picturebix 保存 上書き」で検索して、以前見たこちらを読み直す。

ShiroYuki_Mot の ひとりごと: VB 表示した画像ファイルの上書き保存

GDI+ で ... の エラー メッセージ と ご対面。

画像を開いて、編集して上書き保存するとエラーが出るという話でした。その時は自分で作る物は編集して上書きじゃないから、いいや。と思ったのですが、よくよく考えたら上書きするケースがあったという落ちです。GDI+と上書きが頭に残ってたので、すぐ気づけて良かったです。

改めてソースを追ってみると・・・・。なるほど、ファイルストリームを使って、画像ファイルはすぐにクローズする。画像ファイルは解放されているので、上書き保存が出来るようになるということか。

きっと、次には 忘れていますよ。  きっと。

参考記事の方もこう書かれていますが、きっと忘れそうなのでブログに残しておきます。残したことすら忘れてしまったりして。