منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كيف أنعش مربع الصورة بعد تدميرها لضرورة حذف صورة من مسار مربوط بها
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته
عند عرض صورة من مسار عبر  Load لا استطيع حذف  الصورة الا بعملية Dispose لمربع الصورة بعد افراغها Nothing عند Image ..
هذا هو الكود المستخدم
PHP كود :
Dim index As Integer ListBox1.SelectedIndex
        Dim p 
As String All.APP_path "Pics\PID_" dt.Rows(index)("tid") & "_" dt.Rows(index)("PicName")
 
       dt.Rows(index).Delete()
 
       pic.Image Nothing
        If IsNothing
(pic.ImageThen
            pic
.Dispose()
 
       End If
 
       If IO.File.Exists(p) = False Then GoTo del
        IO
.File.Delete(p
الغريب ان المشكلة (وهي كون ملف الصور يستخدم من عملية اخرى) لا تحدث الا حين يكون موضع البند على 0  واقصد في Listbox1.selectedindex
ما الحل؟!

القصد ان مربع الصورة لا يظهر الصور الاخرى بعد التدمير الا بعد اعادة تشغيل البرنامج!
كيف ننعش مربع الصورة ليعمل او ليرجع لطبيعته؟

الان قمت بتخمين حل ونجح لكن لا اجزم الا بعد التاكد انه حل جذري
والحل هو اسناد الصورة عبار ImageLocation بدلا عن Load و Image.FromFile
نعم الى الان وفي ويندوز اكس بي وويندوز 7 ماخمنته صحيح وهو ان نستخدم الكود التالي لاسناد صورة لمربع الصورة.

PHP كود :
Pic.ImageLocation="picpath" 
(25-07-19, 06:05 AM)سعود كتب : [ -> ]نعم الى الان وفي ويندوز اكس بي وويندوز 7 ماخمنته صحيح وهو ان نستخدم الكود التالي لاسناد صورة لمربع الصورة.

PHP كود :
Pic.ImageLocation="picpath" 

مرحبا سعود ،،

نعم لانك تقوم بعرض الصورة من الملف الأصل لذلك لا يمكنك حذفها لأنها قيد الإستخدام ...

يوجد حلين :

الأول كما تفضلت به .

والثاني تقوم بقراءة البايت للصورة ومن ثم تعرضها في أداة البكشر لعرض الصورة كالتالي :

Image Path = مسار الصورة

كود :
Dim fs As System.IO.FileStream = New System.IO.FileStream(Image Path, IO.FileMode.Open, IO.FileAccess.Read)
           Dim rawdata As Byte() = New Byte(Convert.ToInt32(fs.Length)) {}

           fs.Read(rawdata, 0, Convert.ToInt32(fs.Length))

           Picture1.Image = Image.FromStream(New System.IO.MemoryStream(rawdata))
           fs.Close()
           fs = Nothing

الآن بعد عرض الصورة في أداة البكشر تستطيع حذف ملف الصورة بدون مشاكل وأيضا تستطيع تنظيف وإفراغ أداة البكشر بدون مشاكل .

للمزيد راجع الرابط التالي :

http://vb4arb.com/vb/showthread.php?tid=...#pid139791


بالتوفيق للجميع