آموزش سیشارپ C# – بخش ۲۹
- مقدمه
در بخش قبلی، به اندازه کافی (و نه کامل) در رابطه با 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، اینجا را کلیک کنید.
تشکر
خسته نباشی داداش
یه کم اگه سرعت بدی و حجم درسنامه رو بالا ببری خیلی خوبه
تا الان یه جورایی مقدماتی بوده
به امید اینکه هر چه سریعتر بریم سر قسمتای اصلی
سلام دوست عزیزم،
ممنونم از اینکه نظرت رو برای من ارسال کردی. من تمامی سعیام رو دارم میکنم که تا وقت خالیای گیر بیارم، زود مطالب رو ترجمه بدم و قرار بدم برای شما، اما باور بفرمایید سرم بهقدری شلوغ هست که خیلی سرعتم رو اورده پایین. خیر سر من توی عید که باید تعطیل باشم و سرم خلوتتر باشه، عید امسال حتی از روزهای کاری معمولی هم سرم شلوغتر بود؛ وگرنه من قصد داشتم در عید امسال روزی ۲تا بخش آموزشی همزمان بزارم.
بعدش من مجبورم که یکمی از جزئیات بگم، چونکه شاید همه کاربرها همه چیزهای مقدماتی رو بلد نباشند. بهنظرم توی زبان برنامه نویسی باید مقدمات کاملاً فهمیده بشه … مابقی آنچنان سخت نیست و براساس نیازهای شما باید آموزش داده بشه.
درهر صورت، بهروی چشمم، سعی میکنم سریعتر آموزشها رو بزارم.
ممنونم از شما،
موفق باشید!
مرسی از لطفتون تازه اینجارو پیدا کردم خیلی ممنونم فقط چون من از صفر دارم شروع میکنم جزئیاتو هم بذارید که ما متوجه بشیم بازم ممنون
سلام خیلی مطالب جالب و مفیدی بود من یک سوال داشتم وقتی عکس را باز می کند سایزش را تنظیم نمی کند و خیلی بزرگ نشان می دهد میشه منو راهنمایی کنید.ممنون
سلام دوست عزیزم،
اگرجه نباید مشکلی وجود داشته باشه، اما شما به Properties مربوط به PictureBox مراجعه کنید و مشخصه SizeMode رو Stretch Image بزارید.
موفق باشید.
سلام من چگونه می توانم آدرس عکسی که از Dialog openfile یا openfile انتخاب میکنم را در textBox قرار دهم لطفا هرچه زود تر جواب دهید ممنون میشم
سلام دوست عزیزم،
اگر متوجه منظور شما شدم، شما میتوانید با استفاده از متغیر Chosen_File، نام فایل را در یک Textbox قرار دهید.
موفق باشید!
سلام
من کد رو وارد میکنم ولی عکسی مشاهده نمیکنم
کد رو باید در قسمت دکمه بذارم یا در pic box???????
خواهشا جواب بدین ممنون
با سلام و خسته نباشید
و ممنون از آموزش های عالیتون
من این کدهارا نوشتم و برنامه به درستی عمل میکند اما یک مشکل مبهم وجود دارد اینم آن است هنگامی که از کادر دایلوگ یک عکس را انتخاب میکنم دوباره کادر دایلوگ باز میشود و این بار با انتخاب عکس ،تصویر وارد پیکچر باکس میشود.
برای کلید کنسل نیز همین طور با زدن دکمه بار اول،دوباره کادر دایلوگ باز میشود و این بار با دکمه کنسل کادر بسته میشود.
در واقع برای اجرای درست برنامه دوبار کادر دایلوگ برای انتخاب باز میشود.
ممنون میشم راهنمایی کنید