آموزش سی شارپ C# قسمت شانزدهم

1395/10/25 --- 4462

با سلام و عرض شب بخیر خدمت همه شما همراهان عزیز و گرامی تیم برنامه نویسان , سایت http://ilikephp.ir 

سال نو رو خدمت همه شما عزیزان تبریک میگم . ان‌شاءالله سال خوب و پربرکتی رو پیش رو داشته باشید .

افتخار اینو دارم که در روزهای ابتدایی سال جدید , با جلسه 16 آموزش برنامه نویسی به زبان سی شارپ در خدمتتون باشم .

 

خب احوال پرسی تا اینجا کافی هست :دی . توی جلسات قبلی آموزش ساخت یک وردپد خیلی ساده و ابتدایی رو گفتیم ,آموزش ساخت منو رو توضیح دادیم , گفتیم چطوری میشه متن انتخاب شده توسط کاربر رو بدست آورد و تمامی مشخصات فونت اون متن ( مثل نوع فونت , اندازه , توپر و زیرخط و کج بودن و .... ) رو تغییر داد , رنگ متن انتخاب شده رو تغییر دادیم و در نهایت کار با کلیپ بورد رو توضیح دادیم ( Copy , Cut , Past ) .

توی این جلسه که آخرین جلسه از آموزش ساخت وردپد هست میخوایم آموزش ذخیره سازی و بازکردن فایلمون رو توضیح بدیم

از اونجایی که آموزش تقریبا ابتدایی هست و نمیخوایم با فایل استریم ها درگیر بشیم , من دو روش رو برای ذخیره و باز کردن فایل میگم که کمی راحت تر هست .

 

قبل از هر چیز دوتا منو Open و Save رو به menuStrip موجود توی برنامه اضافه میکنیم .

روش اول - استفاده از متدهای موجود در خود شیء richTextBox :

روی منوی Save دوبار کلیک کنید و کد زیر رو بنویسید ( بعدا توضیحش میدم ) :

SaveFileDialog d = new SaveFileDialog();
if (d.ShowDialog() != DialogResult.OK)
    return;
richTextBox1.SaveFile(d.FileName);

اگر دقت کنید , توی اکثر برنامه ها ( مثل همین ویژوال استادیو یا نرم افزار آفیس ورد یا ..... ) وقتی روی دکمه یا منو Save یا Open کلیک میکنیم , یک صفحه جدید برامون باز میشه که با استفاده از اون میتونیم آدرس مورد نظر خودمون رو برای ذخیره انتخاب کنیم , یا اینکه فایل مورد نظر خودمون رو برای باز کردن انتخاب کنیم ( و یا مواردی شبیه به اینها ) .

خب این فرمی که به این شکل باز میشه , توی سی شارپ SaveFileDialog و OpenFileDialog هست . اگر یادتون باشه قبلا توی همین برنامه از دیالوگ های دیگه که عضوی از همین خانواده بودن استفاده کردیم ( FontDialog و ColorDialog که برای انتخاب فونت و رنگ بود ) . اگر هم یادتون نیست یک سر به ilikephp.ir بزنید و جلسات قبلی آموزش سی شارپ رو دنبال کنید .

حالا اگر بخوایم قطعه کد بالا رو توضیح بدیم , باید بگیم که توی خط اول یک شیء به اسم d ساختیم که با استفاده از اون بتونیم آدرس و نام مورد نظر کاربر برای ذخیره سازی فایل رو دریافت کنیم . توی خط دوم با استفاده از متد ShowDialog() اون فرم معروفی که در موردش صحبت کردیم رو به کاربر نشون دادیم و نتیجه اون رو بررسی کردیم که حتما آدرس و فایل انتخاب شده باشه ( که احیانا کاربر دکمه کنسل یا .... رو نزده باشه تا از خطاهای احتمالی جلوگیری کرده باشیم ! ) و توی خط سوم که تنها در صورت {عدم انتخاب آدرس و نام برای فایل توسط کاربر} اجرا میشه , گفتیم که بقیه دستورات رو اجرا نکنه .

توی خط چهارم هم فایل مورد نظر رو با استفاده از متد SaveFile ذخیره کردیم . دقت کنید متد SaveFile یک ورودی دریافت میکنه که اون هم آدرس و نام فایل مورد نظر هست . برای بدست آوردن آدرس و نام فایل , میتونیم از d.FileName استفاده کنیم .

حالا نحوه Open کردن توی روش اول چیه ؟؟ اونم الان توضیح میدیم . روی منوی Open دوبار کلیک کنید و کد زیر رو بنویسید ( با هم بعدا توضیحش میدم ) :

OpenFileDialog d = new OpenFileDialog();
if (d.ShowDialog() != DialogResult.OK)
    return;
richTextBox1.LoadFile(d.FileName);

خب توی خط اول دوباره یک شیء با اسم d ولی اینبار از کلاس OpenFileDialog ساختیم که با استفاده از اون بتونیم نام و آدرس فایل مورد نظر رو از کاربر دریافت کنیم . توی خط دوم و سوم هم دقیقا مثل Save عمل کردیم ( بررسی کردیم که کاربر حتما فایلی رو انتخاب کرده باشه که از بروز خطای احتمالی جلوگیری کنیم ) .

و در نهایت توی خط چهارم آدرس فایل رو به عنوان ورودی به متد LoadFile ارسال کردیم و با استفاده از اون فایل رو باز کردیم .

 

تا اینجا برنامه رو اجرا کنید . یک متن رو درون اون بنویسید , فونت و سایز و رنگ و ... متن رو تغییر بدید . دستورات گفته شده در مورد Open و Save رو اجرا و تست کنید . اگر از نتیجه راضی بودین , فایلی که ذخیره کردین رو با نرم افزار ناتپد اجرا کنید .

اگر فایل رو با ناتپد اجرا کرده باشید , میبینید  که به همراه متن اصلی یک سری متن نا مفهوم دیگه هم وجود داره . خب خیلی ساده ست . این رشته ها برای مشخص کردن خصوصیات هر تیکه از متن هستن .

حالا اگر توی فایلتون کاراکتر فارسی هم داشته باشید , داستان جالب تر میشه !!! . چون بعد از بازکردن فایل با ناتپد میبینید که هیچ کاراکتر فارسی وجود نداره و همش به صورت کد توی فایل ذخیره شده !

 

روش دوم – استفاده از کلاس File :

خب قبل از اینکه ذخیره و لود توسط این روش رو توضیح بدم , دوتا منوی دیگه به نام های Open2 و Save2 بسازید .

بعد از اون , دستور using System.IO; رو طبق شکل زیر به انتهای اولین کدهای موجود توی صفحه و قبل از شروع namespace اظافه کنید :

آموزش قسمت شانزدهم سی شارپ C#

شکل 1 – using System.IO

روی منوی Save2 دوبار کلیک کنید و کدهای زیر رو بنویسید ( این دفعه هم کمی جلوتر کدها رو توضیح میدم ! ) :

 

SaveFileDialog d = new SaveFileDialog();

if (d.ShowDialog() != DialogResult.OK)

    return;

File.WriteAllText(d.FileName,richTextBox1.Rtf);

توضیح کد بالا : 3 خط اول که خیلی خیلی آشنا بنظر میاد , انگار همین چند دقیقه پیش نوشتیمشون !! (^__^) :/ . توی آخرین خط هم با استفاده از کلاس File و متد WriteAllText فایل خودمون رو ذخیره کردیم . حالا اینجا چند تا نکته مهم هست .

اول اینکه متد  WriteAllText دوتا ورودی دریافت میکنه که اولیش نام و آدرس فایل هست و دومیش هم متن مورد نظر برای ذخیره سازی هست .

دومین نکته اینکه ما حتما باید richTextBox1.Rtf رو به عنوان متن به متد WriteAllText ارسال کنیم . به این دلیل که ( اگر یادتون باشه توی روش قبلی گفتم که فایل ذخیره شده رو با ناتپد باز کنید و بعد از بازکردن دیدیم که فایل حاوی یک سری مقادیر اضافی هست که با استفاده از اونها میتونه خصوصات مختلف متن مثل رنگ و فونت و ... رو مشخص کنه) بتونیم خصوصیات متن رو هم به همراه متن اصلی ذخیره کنیم حتما باید از Rtf استفاده کنیم !

 

در نهایت , روی منوی Open2 هم دوبار کلیک کنید و کدهای زیر رو بنویسید ( توضیحاتش رو بعدا میگم :/ ) :

OpenFileDialog d = new OpenFileDialog();
if (d.ShowDialog() != DialogResult.OK)
    return;
richTextBox1.Rtf = File.ReadAllText(d.FileName);

نمیدونم چرا باز هم 3 خط اول بنظرم آشنا میاد :)) ! . برای خط چهارم هم با استفاده از کلاس فایل و متد ReadAllText , محتویات اون فایلی که آدرسش رو به عنوان ورودی به متد دادیم رو دریافت میکنیم و توی richTextBox قرار میدیم !

 

تبریک میگم . به همین سادگی یک وردپد خیلی ساده رو ساختیم , امکانات ابتدایی و مورد نیاز رو توی اون فراهم کردیم و حالا میتونیم از برناممون استفاده کنیم ! (^__^)

 

اگر سوالی بود میتونید توی گروه برنامه نویسان بپرسید , اگر توی این گروه عضو نیستید با @Alirezahataminia در ارتباط باشید .

ممنون از توجهتون . پایان جلسه 16 آموزش برنامه نویسی به زبان سی شارپ

این آموزش همچنان ادامه دارد :-)

دانلود PDF قسمت شانزدهم آموزش سی شارپ