PDA

View Full Version : سوال: حذف عکس لود شده در PictureBox



__MAHNAZ__
پنج شنبه 13 اردیبهشت 1397, 11:58 صبح
باسلام به همه دوستان
من یک برنامه با سی شارپ و ویندوز فرم نوشتم که در اون یک عکس به وسیله openfiledialoge باز شده و در یک picturebox نمایش داده میشه. آدرس عکس در دیتا بیس ذخیره شده و یک کپی از عکس در یک پوشه مخصوص در کنار فایل اجرایی برنامه ذخیره میشه.
الان مشکلم اینه که وقتی عکس رو بخوام حذف کنم با دستور dispose ویا picturebox.image=null عکس رو از یکچر باکس حذف میکنم ولی از داخل پوشه ای که ذخیره شده پاک نمیشه و پیغام خطا زیر رو میده :

The process cannot access the file 'image path' because it is being used by another process

از روش تهیه کپی از عکس و استفاده از stream ها استفاده کردم ولی جواب نداد.:متفکر::ناراحت::ناراحت:: ناراحت::ناراحت:

336699
پنج شنبه 13 اردیبهشت 1397, 12:08 عصر
باسلام به همه دوستان
من یک برنامه با سی شارپ و ویندوز فرم نوشتم که در اون یک عکس به وسیله openfiledialoge باز شده و در یک picturebox نمایش داده میشه. آدرس عکس در دیتا بیس ذخیره شده و یک کپی از عکس در یک پوشه مخصوص در کنار فایل اجرایی برنامه ذخیره میشه.
الان مشکلم اینه که وقتی عکس رو بخوام حذف کنم با دستور dispose ویا picturebox.image=null عکس رو از یکچر باکس حذف میکنم ولی از داخل پوشه ای که ذخیره شده پاک نمیشه و پیغام خطا زیر رو میده :

The process cannot access the file 'image path' because it is being used by another process

از روش تهیه کپی از عکس و استفاده از stream ها استفاده کردم ولی جواب نداد.:متفکر::ناراحت::ناراحت:: ناراحت::ناراحت:


سلام
برای حذف عکس از داخل فولدر از این کد استفاده کن.

if(File.Exists(filePath))
{
File.Delete(filePath);
}

Mahmoud.Afrad
پنج شنبه 13 اردیبهشت 1397, 12:15 عصر
باسلام به همه دوستان
من یک برنامه با سی شارپ و ویندوز فرم نوشتم که در اون یک عکس به وسیله openfiledialoge باز شده و در یک picturebox نمایش داده میشه. آدرس عکس در دیتا بیس ذخیره شده و یک کپی از عکس در یک پوشه مخصوص در کنار فایل اجرایی برنامه ذخیره میشه.
الان مشکلم اینه که وقتی عکس رو بخوام حذف کنم با دستور dispose ویا picturebox.image=null عکس رو از یکچر باکس حذف میکنم ولی از داخل پوشه ای که ذخیره شده پاک نمیشه و پیغام خطا زیر رو میده :

The process cannot access the file 'image path' because it is being used by another process

از روش تهیه کپی از عکس و استفاده از stream ها استفاده کردم ولی جواب نداد.:متفکر::ناراحت::ناراحت:: ناراحت::ناراحت:

از استریم چطور استفاده کردید؟ کد قرار بدید.

__MAHNAZ__
پنج شنبه 13 اردیبهشت 1397, 12:18 عصر
از همین کد استفاده میکنم :

if (System.IO.File.Exists(BeforeEditPath))
{
try
{
System.IO.File.Delete(BeforeEditPath);
}
catch (System.IO.IOException E)
{
MessageBox.Show(E.Message,"خطا",MessageBoxButtons.OK);
return;
}

__MAHNAZ__
پنج شنبه 13 اردیبهشت 1397, 12:26 عصر
از استریم چطور استفاده کردید؟ کد قرار بدید.

System.IO.FileStream fs;
s = New System.IO.FileStream(file Path, IO.FileMode.Open, IO.FileAccess.Read)
PictureBox1.Image = System.Drawing.Image.FromStream(fs)
fs.Close()

__MAHNAZ__
پنج شنبه 13 اردیبهشت 1397, 12:28 عصر
برای تهیه کپی از عکس هم از کد زیر استفاده کردم ولی هیچ کدوم جواب نداد

Image im = GetCopyImage(Path");
myPictureBox.Image = im;
File.Delete(Path");
}

private Image GetCopyImage(string path)
{
using (Image im = Image.FromFile(path))
{
Bitmap bm = new Bitmap(im);
return bm;
}
}

Mahmoud.Afrad
پنج شنبه 13 اردیبهشت 1397, 12:41 عصر
از تگ مناسب برای کدها استفاده کنید.



یک bitmap ایجاد کنید و نمایش بدید و استریم را از بین ببریذ. نیاز به کپی هم نیست.

__MAHNAZ__
شنبه 15 اردیبهشت 1397, 10:13 صبح
از تگ مناسب برای کدها استفاده کنید.



یک bitmap ایجاد کنید و نمایش بدید و استریم را از بین ببریذ. نیاز به کپی هم نیست.

متوجه منظورتون نمی شم. ممکنه توضیح بدید به کدی که نوشتم چه چیزی رو باید اضافه کنم؟

danialafshari
دوشنبه 17 اردیبهشت 1397, 03:57 صبح
متوجه منظورتون نمی شم. ممکنه توضیح بدید به کدی که نوشتم چه چیزی رو باید اضافه کنم؟
OpenFileDialog oDialog;
private void Browse_Click(object sender, EventArgs e)
{
oDialog = new OpenFileDialog();
if (oDialog.ShowDialog() == DialogResult.OK)
{
using (var stream = new FileStream(oDialog.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
pictureBox1.Image = System.Drawing.Image.FromStream(stream);
}
}
}
private void Remove_Click(object sender, EventArgs e)
{
System.IO.File.Delete(oDialog.FileName);
}

adel1230
دوشنبه 14 خرداد 1397, 12:53 عصر
سلام
شاید این بدردت بخوره
this.pictureBox1.Image = null;