آموزش ساخت نوت پد در سی شارپ
در این آموزش که به همراه سورس سی شارپ براتون در پیوست قرار دادیم میخوایم نحوه ایجاد یک ویرایشگر متن ساده شبیه notepad خود ویندوز براتون قرار بدم…
در ابتدا فرمی شبیه فرم زیر ایجاد کنید.
از چپ به راست نام شی های فرم می باشد که همگی در ابزار سی شارپ قابل رویت است :
menuStrip | toolStrip | textBox | statusStrip
گزینه یا تصویر اول از سمت چپ ایجاد فایل جدید است (عکس شماره 1 و عکس زیر)
کد های در ادامه برای منوی مشخص شده در عکس زیر می باشد.
که ما برای این گزینه تابع زیر را تعریف کردیم و از آن خواستیم در صورت باز بودن فایل باز ابتدا به کاربر یک هشدار نمایش بده کهآیا قصد بسن این فایل را دارید؟ و در صورت انتخاب دکمه بله فایل ذخیره شود در غیر اینصورت فایل بسته و فایل جدید ایجاد شود و فیلد متن ذخیره…
private void newFile() { DialogResult result = MessageBox.Show("آیا قصد ذخیره فایل را دارید؟", "هشدار", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning); if (result == DialogResult.Yes) { if (currentFile != null) saveFile(); else saveFileAs(); } else if (result == DialogResult.Cancel) { //code for Cancel return; } textBox1.Text = ""; saveBtn.Enabled = false; saveToolStripMenuItem.Enabled = false; printBtn.Enabled = false; printToolStripMenuItem.Enabled = false; currentFile = null; }
منوی دوم منوی باز کردن فایل است.
ما در این نوت پد که به زبان سی شارپ سایت پروژه 724 آماده کرده میتونیم فایل های متنی با پسوند txt و هر فایل متنی دیگررا به سادگی باز کنیم و برای باز کردن این فایل ها باید از کد زیر استفاده کنیم.
OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.InitialDirectory = "c:\\"; openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; openFileDialog1.FilterIndex = 2; openFileDialog1.RestoreDirectory = true; if (openFileDialog1.ShowDialog() == DialogResult.OK) { currentFile = openFileDialog1.FileName; System.IO.StreamReader sr = new System.IO.StreamReader(currentFile); textBox1.Text = sr.ReadToEnd(); //enable save and print option saveBtn.Enabled = true; saveToolStripMenuItem.Enabled = true; printBtn.Enabled = true; printToolStripMenuItem.Enabled = true; this.Text = currentFile + " Notepad"; sr.Close(); }
آیتم سوم در عکس بالا آیتم ذخیره فایل است.
در کد زیر ما فایل باز را به سادگی در هر مسیری با پسوند مشخص شده میتوان ذخیره کرد.
SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.InitialDirectory = "c:\\"; saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; saveFileDialog1.FilterIndex = 2; saveFileDialog1.RestoreDirectory = true; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { currentFile = saveFileDialog1.FileName; this.Text = currentFile + " Notepad"; saveFile(); } saveBtn.Enabled = true; saveToolStripMenuItem.Enabled = true; printBtn.Enabled = true; printToolStripMenuItem.Enabled = true;
و دستور بعدی دکمه چاپ فایل جاری است.
در زبان برنامه نویسی ما برای استفاده از ابزار چاپ باید از کدی شبیه کد زیر استفاده کرد که در برنامه نوشته شده جاری ما از این کد استفاده کردیم ببینید.
PrintDialog printDlg = new PrintDialog(); PrintDocument printDoc = new PrintDocument(); printDoc.DocumentName = currentFile; printDlg.Document = printDoc; printDlg.AllowSelection = true; printDlg.AllowSomePages = true; //Call ShowDialog if (printDlg.ShowDialog() == DialogResult.OK) printDoc.Print();
و دستور آخر منوی برنامه دستور خروج است
فکر کنید دارید روی یک فایل متنی کار میکنید و کلی تایپ کردید ناگهان دستتون میره روی دکمه خروج ما برای خروج ناگهانی صفحه یک پیام هشدار قرار دادیم…
پیغامی با عنوان و متن فارسی مبنی بر خورج شما از برنامه ظاهر میشود در صورت زدن بله از برنامه خارج میشود و در صورت زدن خیر به ادامه کار در برنامه می پردازید.
DialogResult result = MessageBox.Show ("آیا واقعا میخواهید از برنامه خارج شوید؟\n تمام فایل ها باز شده بسته شوند", "هشدار", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result == DialogResult.Yes) { this.Close(); } else if (result == DialogResult.No) { //code for Cancel return; }
بی مقدمه میریم سراغ منوی دوم برنامه .
در هنگام ایجاد منو از شی منو آیتم شبیه عکس را با تنظیمات مورد نظر انجام دهید.
در منوی Format دو زیر منوی دیگر برای تغییر خط (فونت) برنامه و دیگر گزینه اندازه خط (سایز) برای بزرگ و کوچک کردن متن می باشد.
ما برای دکمه اول از کد زیر استفاده میکنیم که فونت سیستمی انتخاب شده را با متن تایپ شده در برنامه ست میکند.
textBox1.Font = new Font(fontBox.SelectedItem.ToString(),textSizeValue);
و برای گزینه دوم باید از کد زیر استفاده کنیم که اندازه خط را با متن تایپ شده ست میکند.
textSizeValue = int.Parse(sizeBox.SelectedItem.ToString()); textBox1.Font = new Font(fontBox.SelectedItem.ToString(), textSizeValue); lineNumber.Font = new Font(fontBox.SelectedItem.ToString(), textSizeValue);
و اما میریم سر وقت منوی سوم که کد های ساده تری نسبت به منوی های قبلی داره.
طبیعتا در اغلب برنامه ها زیر منوهای منو edit گزینه های نگارشی است.
در آیتم اول باید کد یک خط و ساده زیر را برای کپی متن در سی شارپ نوشت :
textBox1.Copy();
کد زیر هم برای دکمه paste چسپاندن می نویسیم:
textBox1.Paste();
و کد زیر هم برای دکمه Cut یا همون قیچی مینویسیم :
textBox1.Cut();
امیدوارم تا اینجا خسته نشده باشید اگه ذهنتان امادگی این را دارد تا بریم سروقت ادامه آموزش در غیر اینصورت حتما پیشنهاد میکنم موس و کیبرد را کنار گذاشته چرخی بزنید چیزی بخورید و مجدد به پای سیستم بیاید.
در ادامه پروژه نت پد میخوایم بریم سر وقت یکی از مهمترین بخش های دیگر یک ویرایشگر حرفه ای. شما همیشه یک ابزار برای جستجو متن و یا جیگزیر کردن متن جدید جای متن جستجو شده نیاز دارید در همین راستا ما میخواهیم به شما آموزش بدیم که چگونه به سادگی آب خوردن میتوانید روی یک رشته جستجو و عمل جایگزینه را انجام دهید برید سر وقت محیط سی شارپ.
ابتدا فرمی شبیه فرم ما با نام findForm ایجاد کنید.
همونطور که مشخصه یک شي label یک TextBox و دو تا هم Button یکی برای پیدا کردن متن و دیگر برای بستن فرم روی فرم قرار میدهیم.
تمامی کد هایی که در این فرم نیاز دارید کد زیر می باشد .
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Notepad { public partial class findForm : Form { String findWord; public findForm() { InitializeComponent(); } private void cancelBtn_Click(object sender, EventArgs e) { findWord = ""; this.Close(); } private void okBtn_Click(object sender, EventArgs e) { findWord = findText.Text; this.Close(); } public String getFindWord() { return findWord; } } }
یادآوری میکنم که ما در دکمه Find فرم اول باید کد زیر را برا باز شدن پنجره جستجو مینوشتیم.
این دستور فرم بالا جستجو (findForm) را باز میکند و متن جستجو شده را در فرم اول پیدا میکند.
private void Find() { findForm f1 = new findForm(); f1.ShowDialog(); if (f1.getFindWord() != "") { int index = 0; while (index != -1 && index < textBox1.Text.Length) { index = textBox1.Text.IndexOf(f1.getFindWord(), index); if (index != -1) { textBox1.Select(index, f1.getFindWord().Length); index++; f1.ShowDialog(); } } } MessageBox.Show("End of file","End of file"); }
و امکان بعدی امکان پیدا کردن و جایگزینی است شما در متن طولانی به سادگی کلمه مورد نظر را جستجو میکنید و متن جدید را جایگزینش قرار میدهید.
و کد زیر تمامی کد فرم بالا است
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Notepad { public partial class replaceForm : Form { public String findWord; public String replaceWord; public replaceForm() { InitializeComponent(); } private void replaceBtn_Click(object sender, EventArgs e) { findWord = findText.Text; replaceWord = replaceText.Text; this.Close(); } private void cancelBtn_Click(object sender, EventArgs e) { findWord = ""; replaceWord = ""; this.Close(); } } }
و برای صدا زدن دکمه جایگزین متن از فرم اول باید از کد زیر استفاده کنید.
private void Replace() { replaceForm r1 = new replaceForm(); r1.ShowDialog(); String findWord = r1.findWord; String replaceWord = r1.replaceWord; if (findWord != "") { textBox1.Text = textBox1.Text.Replace(findWord, replaceWord); MessageBox.Show("پایان جایگزینی", "پایان", MessageBoxButtons.OK); } else MessageBox.Show("چیزی برای جایگزینی وجود نداشت", "پایان", MessageBoxButtons.OK); }
و یه نکته دیگه هم که هست در هنگام اجرای برنامه با زدن دکمه F1 کیبرد به راهنمای برنامه میروید | چونه این کار را کنیم؟ شما هر کدوم از آیتم منو ها را که دوست دارید انتخاب کنید و از Propertis طبق عکس زیر مقدار Shortcut Keys را تغییر دهید.
و در پیان این آموزش شما برای بازگشتن به عمل قبل Undo و عمل بعد از استفاده کنید.
private void myUndo() { redoList.Add(textBox1.Text); redoBtn.Enabled = true; redoToolStripMenuItem.Enabled = true; textBox1.Text = (String)undoList[undoList.Count - 2]; undoList.RemoveAt(undoList.Count - 1); undoList.RemoveAt(undoList.Count - 1); if (undoList.Count == 1) { undoBtn.Enabled = false; undoToolStripMenuItem.Enabled = false; } }
private void myRedo() { textBox1.Text = (String)redoList[redoList.Count - 1]; redoList.RemoveAt(redoList.Count-1); if (redoList.Count == 0) { redoBtn.Enabled = false; redoToolStripMenuItem.Enabled = false; } }
…
[button color=”green” size=”medium” link=”http://proje724.ir/wp-content/uploads/2014/12/Notepad-Proje724.ir_.rar” icon=”download” target=”true”]دانلود سورس دفترچه یاداشت[/button]
مطالب زیر را حتما مطالعه کنید
معرفی WPF ، کاربرد WPF تکنولوژی کاربردی برای سی شارپی ها
کد پروژه بررسی اتصال به اینترنت در سی شارپ
آموزش کم کردن تاریخ شمسی از هم
نمونه برنامه های اندروید | معرفی سایت
معرفی Skin یا قالب فرم برای برنامه شما در سی شارپ
وارد کردن مخاطبان جیمیل در نرم افزار
7 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
سلام
بسیار عالی و کاربردی بود خیلی ممنون
slm .dar barname undo va redo , undolist va redo list chi hastan?
سلام این دو تابع تاریخچه بازگشت و پیشرفت در اصلاح فایل است.
عالی بود دوست عزیز
خواهش میکنم.
ممنون عالیه
نظر شما باعث خوشنودی و قرار دادن آموزش های بیشتر است.
سپاس