「ほっ」と。キャンペーン
(.Net)画像ファイルを表示しながら削除可能にする方法
PictureBoxであるイメージファイルを表示したままそのファイルを消す場合の方法です。
通常ファイル名を指定して Bitmap オブジェクトを作成し、Pictureboxにセットした後、File.Delete(パス) で消しますが、こうすると例外発生します。
なぜなら Bitmap をファイルから作成した場合、その Bitmap オブジェクトが解放されるまでイメージファイルをロックするからです。

ということで、下記のコードでは読み込み専用のオブジェクトを使って読み込み、Picturebox表示用イメージを作成後、読み込み専用オブジェクトを破棄(Discope)します。
破棄した時点でファイル操作(削除とか)が可能になります。

Imports System.IO
 
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
'読み込みだけに使う一時イメージオブジェクト(読み込み専用オブジェクト)
Dim bufBmp As New Bitmap("C:\test.jpg")
'Pictureboxに表示するイメージオブジェクト作成
Dim bmp As New Bitmap(bufBmp)
'読み込み一時用イメージオブジェクト解放(解放した時点でファイルのロックが解放される)
bufBmp.Dispose()
Me.PictureBox1.Image = bmp
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
File.Delete("C:\test.jpg")
Catch ex As Exception
MsgBox(ex.Message)
 
End Try
End Sub
End Class

[PR]
by jehoshaphat | 2008-09-09 15:05 | .Net開発 | Trackback | Comments(0)
トラックバックURL : http://jehupc.exblog.jp/tb/8588988
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。


<< 大規模アプリケーション:GRE... (VS2005) ある条件にな... >>