PDA

View Full Version : سوال: Delete كردن عكسي كه در حال نمايش هست



afshin61
یک شنبه 03 شهریور 1387, 00:34 صبح
سلام

من يك فرم دارم كه يك سري اطلاعات اشخاص به اضافه عكس اونها رو با مشخص كردن كد اونها نمايش ميده ...

مشكل من توي ويرايش اطلاعات عكس هست ... وقتي ميخوام عكس رو ( كه توي يك فولدر كنار فايل اجرايي ذخيره ميكنم ) عوض كنم

چون عكس رو توي PictureBox نشون ميدم ٍ error زير رو ميده !‌ ( mscorlib ) :

The process cannot access the file 'C:\Documents and Settings\Dear-User\My Documents\My Pictures\TestTT.jpg' because it is being used by another process.


همه كار هم كردم ... عكس رو از رو PictureBox برداشتم ... صبر هم كردم ولي فايل عكس آزاد نميشه !!!

در واقع من اون فايل رو تا زماني كه فرم رو نبستم نه ميتونم پاك كنم ( Delete ) و نه ( Replace )

راه حلي به ذهنتون مي رسه ؟؟؟ ممنون ميشم راهنمايي كنيد ...

afshin61
پنج شنبه 07 شهریور 1387, 00:41 صبح
كسي جواب اين سوال رو نمي دونه ؟؟؟؟

kablayi
پنج شنبه 07 شهریور 1387, 01:10 صبح
سلام ...
تا برنامه رو نزارید نمیشه مشکل رو حل کرد ... ممکنه عکسی که نمایش میدید به وسیله یه برنامه دیگه استفاده میشه ( حتی خود VS ) و شما قصد پاک کردن اونو داشته باشین ...

afshin61
جمعه 08 شهریور 1387, 17:37 عصر
اينم سورس يه نمونه مثال ...
چون امكان گذاشتن برنامه اصلي اينجا نبود يه نمونه ساختم ... مشكلم با Delete اين حل بشه اون هم حله ...

ممنون

__H2__
جمعه 08 شهریور 1387, 22:54 عصر
سلام

چون عكس رو توي PictureBox نشون ميدم ٍ error زير رو ميده !‌
شی Image را Dispose کنید، احتمالاً مشکل حل میشود.

saina2006
جمعه 08 شهریور 1387, 22:59 عصر
میتونی عکس را قبل از نمایش توی فولدر temp برنامه ذخیره کنی و بعد از اونجا عکی رو نشون بدی و موقع پاک کردن هم فایل اصلی را پاک کنی

afshin61
دوشنبه 11 شهریور 1387, 18:06 عصر
میتونی عکس را قبل از نمایش توی فولدر temp برنامه ذخیره کنی و بعد از اونجا عکی رو نشون بدی و موقع پاک کردن هم فایل اصلی را پاک کنی

اين كار رو كردم دوست عزيز .... ولي باز هم نشد .... تا فرمم رو نبستم نميتونم او فايل رو هيچ تغييري بدم .

كاري كه __H2__ گفته رو هم انجام داده بودم .... نميشه ....

باز هم فكر كنيد ببينيد چكار ميشه كرد ... فكر نميكردم اينقدر مسئله پيچيده باشه !

mostafaaa
دوشنبه 11 شهریور 1387, 19:37 عصر
کاری که H2 گفتن کاملا درسته . با Dispose کردن pictureBox به راحتی عکس پاک میشه!!؟

Public Class Form1

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try
OpenFileDialog1.Filter = "*.bmp|*.bmp | *.jpg |*.jpg"
OpenFileDialog1.ShowDialog()
PictureBox1.Image = System.Drawing.Image.FromFile(OpenFileDialog1.File Name)
TextBox1.Text = OpenFileDialog1.FileName
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
PictureBox1.Image.Dispose()
PictureBox1.Dispose()
'System.Threading.Thread.Sleep(1000)
System.IO.File.Delete(TextBox1.Text.Trim)
Catch ex As Exception
MsgBox(ex.ToString)
End Try

End Sub
End Class

afshin61
سه شنبه 12 شهریور 1387, 02:47 صبح
ممنونم ...

ولي با اين روش PictureBox1 ميره ... چطور ميتونم PictureBox رو برگردونم . ( به همون شكل )

ولي بازم ممنونم

mostafaaa
سه شنبه 12 شهریور 1387, 09:25 صبح
Try
PictureBox1.Image.Dispose()
PictureBox1.Image = Nothing
'System.Threading.Thread.Sleep(1000)
System.IO.File.Delete(TextBox1.Text.Trim)
Catch ex As Exception
MsgBox(ex.ToString)
End Try