• مقدمه

در بخش قبلی، به اندازه کافی (و نه کامل) در رابطه با 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، عکس را در فرم خود خواهیم داشت. کدهای شما شکلی شبیه به شکل زیر را خواهند داشت:

1-OpenFileDialog_Code

برنامه خود را اجرا کرده و آن را امتحان کنید. یک عکس را انتخاب کنید و آن را در فرم خود قرار دهید. شما باید نتیجه کار خودتان را با موفقیت ببینید.

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

2-OpenFileDialog_Error

مشکلی که بوجود می‌آید این است که وقتی که شما cancel را انتخاب می‌کنید، نتیجه این است که شما فایلی را انتخاب نکرده‌اید؛ در نهایت، متغیر Chosen_File شما خالی باقی می‌ماند و در مرحله استفاده از متد FromFile()، با مشکل مواجه می‌شود.

برای اینکه بررسی کنیم که آیا در دیالوگ، Cancel انتخاب شده است، می‌توانیم از کد زیر استفاده کنیم:

if (openFD.ShowDialog() == DialogResult.Cancel)

{

            MessageBox.Show(“Operation Cancelled”);

}

ما یک شیء به‌صورت پیشفرض در سی‌شارپ داریم به نام DialogResult. توسط آن می‌توانید نتیجه‌ي انتخاب شده توسط یک دیالوگ را تعیین کنید. اضافه کردن یک کد دیگر توسط ELSE، مشکل ما را برطرف خواهد کرد.

3-OpenFileDialog_Code2

برنامه خود را یک بار دیگر اجرا کنید و مشکل را بررسی کنید؛ خواهید دید که مشکلی وجود ندارد!

کار دیگری که می‌توانستیم انجام دهیم که کدهای ما به‌صورت بهینه‌تری باشند، استفاده از چند خط کد زیر است. یعنی به‌جای استفاده از دو دستور شرطی IF و ELSE، از یک IF استفاده کنیم:

if (openFD.ShowDialog() != DialogResult.Cancel)

{

            Chosen_File = openFD.FileName;

            pictureBox1.Image = FromFile(Chosen_File);

}

با استفاده از اعمال منطقی ریاضی (عمل NOT که با علامت ! نمایش می‌دهند) توانستیم که کدی شبیه به کد بالا را بنویسیم.

جهت دریافت این بخش آموزشی به‌صورت یک فایل PDF، اینجا را کلیک کنید.

نظرات کاربران
اشتراک در
اطلاع از
10 نظرات
Reza
13 سال قبل

تشکر

alireza
13 سال قبل

خسته نباشی داداش
یه کم اگه سرعت بدی و حجم درسنامه رو بالا ببری خیلی خوبه
تا الان یه جورایی مقدماتی بوده
به امید اینکه هر چه سریعتر بریم سر قسمتای اصلی

مریم
13 سال قبل

مرسی از لطفتون تازه اینجارو پیدا کردم خیلی ممنونم فقط چون من از صفر دارم شروع میکنم جزئیاتو هم بذارید که ما متوجه بشیم بازم ممنون

علیرضا
13 سال قبل

سلام خیلی مطالب جالب و مفیدی بود من یک سوال داشتم وقتی عکس را باز می کند سایزش را تنظیم نمی کند و خیلی بزرگ نشان می دهد میشه منو راهنمایی کنید.ممنون

سپیده ححح
12 سال قبل

سلام من چگونه می توانم آدرس عکسی که از Dialog openfile یا openfile انتخاب میکنم را در textBox قرار دهم لطفا هرچه زود تر جواب دهید ممنون میشم

عاطفه
10 سال قبل

سلام
من کد رو وارد میکنم ولی عکسی مشاهده نمیکنم
کد رو باید در قسمت دکمه بذارم یا در pic box???????
خواهشا جواب بدین ممنون

شایان
9 سال قبل

با سلام و خسته نباشید
و ممنون از آموزش های عالیتون
من این کدهارا نوشتم و برنامه به درستی عمل میکند اما یک مشکل مبهم وجود دارد اینم آن است هنگامی که از کادر دایلوگ یک عکس را انتخاب میکنم دوباره کادر دایلوگ باز میشود و این بار با انتخاب عکس ،تصویر وارد پیکچر باکس میشود.
برای کلید کنسل نیز همین طور با زدن دکمه بار اول،دوباره کادر دایلوگ باز میشود و این بار با دکمه کنسل کادر بسته میشود.
در واقع برای اجرای درست برنامه دوبار کادر دایلوگ برای انتخاب باز میشود.
ممنون میشم راهنمایی کنید