کار با فایل ها در سی شارپ
با یکی دیگر از سری مقالات آموزشی سی شارپ در خدمت شما دوستان هستم. این آموزش درباره کار با RichTexbox ها و متدهای مرتبط با اون و همچنین آشنایی با String و کار با فایل ها در سی شارپ هست. در این آموزش سعی میکنیم برنامه ای بنویسیم که بتونیم از طریق TextBox مقادیر رشته ای رو از کاربر دریافت کنیم و اون ها رو در یک RichtexBox نشون بدیم و همچنین بتونیم مقدار RichtexBox رو در یک فایل نوت پد (txt) ذخیره کنیم. پس شروع میکنیم…
در ابتدا در ویژوال استودیو یک پروژه جدید ویندوز فرم ایجاد میکنیم و سپس tool های لازم رو مطابق شکل زیر به اون اضافه کنید. من از tool های textbox ، richtextbox ، button استفاده کردم و برای زیبایی کار از groupbox کمک گرفتم تا ظاهر برنامه رو کاربر پسندتر طراحی کنم.
در قسمت کتابخانه های برنامه (در خطوط اول پروژه) با استفاده از دستور using کتابخانه IO رو وارد برنامه میکنیم. برای این کار دستور زیر رو میتونید در انتهای قسمت کتابخانه ها کپی کنید:
using System.IO;
خب من میخوام مقادیری که از تکست باکس ها دریافت میکنم رو در یک متغیر ذخیره کنم. من برای این کار از یک آرایه از جنس String استفاده میکنم. وقتی که کاربر تموم داده های خود رو وارد کرد هرکدام از فیلدهای ما داخل یک آرایه ذخیره میشود. اما برای اینکه این داده ها رو داخل یک فایل بریزیم با یک مشکل رو به رو هستیم که این مشکل به خاطر این هست که کلاس File در سی شارپ برای نوشتن یک متغیر داخل فایل از آرایه پشتیبانی نمیکند. ما تمام خانه های آرایه رو به ترتیب و به صورت یک در میان با “\t” جمع (کانکت) میکنیم و اون ها رو داخل یک متغیر با نام دیتا میریزیم. این کار باعث شده تا داده های ما به صورت ستونی و با فاصله منظم از یکدیگر در فایل ذخیره شود. دوستان توجه داشته باشید که تموم این عملیات تا اینجای کار در قسمت event دکمه submit در حال رخ دادن هست و کار ما با این دکمه هنوز تمام نشده.
خب ما داده رو از کاربر گرفتیم و باید اون رو در richtextbox و فایل خودمون نشون بدیم. کلاس File در سی شارپ یک کلاس استاتیک هست و برای استفاده از اون ما نیاز به ساخت شئ از اون نداریم. با کمک متد WriteAlltext() میتوانیم یک فایل در آدرس مورد نظر ایجاد کرده و متغیر data رو در اون نمایش بدهیم. اما مشکلی که در این متد وجود داره این هست که با هربار داده جدید فایل قبلی پاک شده و فایل و داده جدید را نمایش میدهد. برای حل این مشکل از کلاس streamwriter و متد WriteLine() کمک میگیریم. اما در ابتدا با یک شرط if و متد Exist() کمک میگیریم تا چک کنیم اگر فایلی در آدرس مورد نظر وجود نداشت آن را ایجاد کنیم و یا اگر وجود داشت داده جدید را به آن بچسبانیم. در نهایت با متد Loadfile() از شئ richtexbox میتوانیم فایل ایجاد شده را در آن نمایش دهیم.
تمامی توضیحات بالا در زیر به صورت کد بیان شده اند و این کد ها در قسمت event دکمه submit باید قرار گیرد.
arr[0] = textBox1.Text; //ID arr[1] = textBox2.Text; //name arr[2] = textBox3.Text; //Lname arr[3] = textBox4.Text; arr[4] = textBox6.Text; data = arr[0] + "\t" + arr[1] + "\t" + arr[2] + "\t" + arr[4] + "\t" + arr[3]; if (File.Exists(@"E:\information.txt")==false) { File.WriteAllText(@"E:\information.txt", data); loadFile(); MessageBox.Show("Saved to file!"); } else { StreamWriter str = new StreamWriter(@"E:\information.txt", true); str.Write("\n"); str.WriteLine(data); str.Close(); loadFile(); MessageBox.Show("Saved to file!"); } richTextBox1.LoadFile(@"E:\information.txt", RichTextBoxStreamType.PlainText); textBox1.Text = ""; textBox2.Text = ""; textBox3.Text = ""; textBox4.Text = ""; textBox6.Text = "";
و در نهایت این هم نمایی از خروجی برنامه :
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.