Jeff Mosawy
- مقدمه
در بخش قبلی، به اندازه کافی (و نه کامل) در رابطه با Open File Dialog و امکانات آن صحبت کردیم. همچنین ذکر کردیم که توسط دیالوگها، تنها عمل انتخاب فایل انجام میشود؛ اما برای قرار دادن خود شیء، باید کدهای دیگری را بنویسیم.
پس در این بخش، دقیقاً کاری که میخواهیم انجام دهیم این هست؛ عکسی را به انتخاب خودمان در فرم خود نمایش دهیم.
- قرار دادن عکس توسط Open File Dialog
پس از آنکه کارهایی که در بخش قبلی گفتیم و یک دیالوگ ساختید، میبایست که فایلی که توسط کاربر انتخاب میشود را مسیریابی کرده و آن را در متغیری ذخیره کنیم تا بتوانیم فایل مورد نظر را قرار دهیم.
ما یک متغیر از نوع String تعریف خواهیم کرد که توسط آن، نام فایل انتخاب شده را در آن ذخیره میکنیم. پس یک متغیر ایجاد میکنیم:
string Chosen_File = “”;
برای اینکه نام فایل انتخاب شده را از دیالوگ بگیریم و در این متغیر ذخیره کنیم، کد زیر را استفاده میکنیم:
Chosen_File = openFD.FileName;
نام فایل در نهایت در متغیر Chosen_File ذخیره خواهد شد. حال وقت آن رسیده که عکس را در یک PictureBox قرار دهیم. اگر PictureBox ندارید، آن را به فرم اضافه کنید. برای دسترسی به مشخصه image از PictureBox، کد زیر را بکار میبریم:
pictureBox1.Image
و برای قرار دادن عکسی که کاربر انتخاب کرده، کد زیر را مینویسیم:
pictureBox1.Image = Image.FromFile(Chosen_File);
کد بالا کاملاً مشخص هست. برای قرار دادن یک عکس در Picture Box، میبایست که مشخصه Image آن دسترسی پیدا کنیم. (که انجام شد) سپس، با استفاده از متد FromFile() موجود در کلاس Image (بعداً در رابطه با Class بیشتر آشنا میشوید) و دادن نام عکس بهصورت یک String، عکس را در فرم خود خواهیم داشت. کدهای شما شکلی شبیه به شکل زیر را خواهند داشت:

برنامه خود را اجرا کرده و آن را امتحان کنید. یک عکس را انتخاب کنید و آن را در فرم خود قرار دهید. شما باید نتیجه کار خودتان را با موفقیت ببینید.
کارهایی که در بالا انجام دادیم، خالی از عیب و نقص نیست و دارای یک ایراد بزرگ است! یکبار دیگر برنامه خود را امتحان کنید و اینبار بهجای کلیک کردن بر روی Open، بر روی Cancel کلیک کنید. (در دیالوگ). شما باید خطایی (Error) به شکل زیر ببینید:

مشکلی که بوجود میآید این است که وقتی که شما cancel را انتخاب میکنید، نتیجه این است که شما فایلی را انتخاب نکردهاید؛ در نهایت، متغیر Chosen_File شما خالی باقی میماند و در مرحله استفاده از متد FromFile()، با مشکل مواجه میشود.
برای اینکه بررسی کنیم که آیا در دیالوگ، Cancel انتخاب شده است، میتوانیم از کد زیر استفاده کنیم:
if (openFD.ShowDialog() == DialogResult.Cancel)
{
MessageBox.Show(“Operation Cancelled”);
}
ما یک شیء بهصورت پیشفرض در سیشارپ داریم به نام DialogResult. توسط آن میتوانید نتیجهی انتخاب شده توسط یک دیالوگ را تعیین کنید. اضافه کردن یک کد دیگر توسط ELSE، مشکل ما را برطرف خواهد کرد.

برنامه خود را یک بار دیگر اجرا کنید و مشکل را بررسی کنید؛ خواهید دید که مشکلی وجود ندارد!
کار دیگری که میتوانستیم انجام دهیم که کدهای ما بهصورت بهینهتری باشند، استفاده از چند خط کد زیر است. یعنی بهجای استفاده از دو دستور شرطی IF و ELSE، از یک IF استفاده کنیم:
if (openFD.ShowDialog() != DialogResult.Cancel)
{
Chosen_File = openFD.FileName;
pictureBox1.Image = FromFile(Chosen_File);
}
با استفاده از اعمال منطقی ریاضی (عمل NOT که با علامت ! نمایش میدهند) توانستیم که کدی شبیه به کد بالا را بنویسیم.
جهت دریافت این بخش آموزشی بهصورت یک فایل PDF، اینجا را کلیک کنید.
