سورس کد نوت پد در ویندوز فرم سی شارپ

یکی از روش های یادگیری و آموزش برنامه نویسی استفاده از سورس کد پروژه های مختلف است اگر شما میخواهید که در برنامه نویسی، متخصص شوید حتما سورس کدهای مختلفی رو ببینید تا با روش های مختلف کدنویسی آشنا شوید. در سایت سورس ایران تعداد زیادی سورس کد پروژه وجود دارد که می توانید با یک جستجو ساده به آنها دسترسی پیدا کنید. در این لحظه می خواهیم سورس کد نوت پد در ویندوز فرم سی شارپ رو آماده کردیم که در ادامه به صورت کامل در مورد این سورس صحبت می کنیم.

این برنامه شبیه ساز Notepad ویندوز است که با زبان سی شارپ نوشته شده است. شما در این برنامه میتوانید متن بنویسید، ذخیره کنید و فایل های قبلی را باز نمایید. (البته این برنامه امکانات فوق العاده ای داره که باید خودتون ببینید.)
هدف اصلی آشنا شدن شما با کدها و تمرین کردن است که میتوانید با نوشتن دوباره این شبیه ساز، در صورت نیاز به این کدها رجوع کرده و از آن استفاده نمایید تا به درک درستی از نوشتن نوت پد برسید.

نوت پد در ویندوز فرم سی شارپ

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

نوت پد در ویندوز فرم سی شارپ

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

using System;
using System.Collections.Generic;   	
using System.ComponentModel;
using System.Data;    
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

 بخش بعدی از سورس کد نوت پد در ویندوز فرم سی شارپ بخش پایین است که به صورت کامل توضیحات لازم رو ارائه کرده ایم.

  • منظور از Flag برای بررسی ذخیره شدن یا نشدن فایل است.
  • Path مسیر یا آدرس فایلی است که در آن نگهداری می شود.
  • Index undo و آرایه Undo مربوط به قابلیت برگشتن به یک مرحله قبل تر است.
  • txtLength برای اطلاع از آخرین تغییرات در متن است که آیا ذخیره شده اند یا خیر.
  • Char index و LineIndex هر دو مربوط به قابلیت Status Bar است.
  • FrmAlert مربوط به نمایش پیغام به کاربر است.
  • Frm About در مورد بخش About نوت پد است.
  • IndexFind مربوط به FindNext نوت پد است که از ۱- شروع می شود تا در ابتدای کد، وقتی با ۱ جمع شد مقدار صفر شود و ایندکس جستجو از آنجا آغاز می شود.
bool flag = false;
string path = ""; 
int indexUndo;
string[] Undo = new string[100]; 
int txtLength = 0;
int charIndex;
public int lineIndex;
FrmAlert frmAlert = new FrmAlert();
FrmAboutNotepad frmAbout = new FrmAboutNotepad(); 
int indexFind = -1; 
 نمایی از خروجی سورس کد نوت پد در ویندوز فرم سی شارپسورس کد نوت پد در ویندوز فرم
بخش بعدی از سورس کد نوت پد در ویندوز فرم سی شارپ که خیلی مهم است مربوط به همان جایی است که در آن متن می نویسیم.
lbl2Alert برای متن پیغام است. TxtContent همان تکس باکس است که درآن متن می نویسیم. 
void MymnuNew() // این متد برای ایجاد دوبار متن است 
    {
       path = "";
       frmAlert.lbl2Alert.Visible = false;
       txtContent.Text = string.Empty;
       this.Text = "Untitled" + " - " + "Notepad";
       flag = false;
       indexUndo = 0;
       txtLength = txtContent.TextLength;
    }
void MyFileWrieAllText() تعریف متد برای ذخیره ذخیر متن.
   {
     File.WriteAllText(path, txtContent.Text); برای ذخیره متن در محل گفته شده.
     this.Text = Path.GetFileNameWithoutExtension(path)برای بدست آوردن عنوان برنامه
      + Path.GetExtension(path) + " - " + "Notepad";
     txtLength = txtContent.TextLength;
     flag = true;برای فهماندن برنامه که فایل ذخیره شده است
   }
void MyOpenFileDialog()  openتعریف متد برای بازشدن پنجره 
        {
            openFileDialog1.FileName = "";                                    open تنضیمات مربوط دیالوگ 
            openFileDialog1.Filter = "Text Documents|*.txt|All Files | *.*";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)  برسی براینکه آیا کاربر گزینه ذخیره را کلیک کرده یا خیر  
            {
                path = openFileDialog1.FileName;ریختن آدرس در این فیلد
                txtContent.Text = File.ReadAllText(path);فراخنی آدرس
                this.Text = Path.GetFileNameWithoutExtension(path) 
                 + Path.GetExtension(path) + " - " + "Notepad";
                txtLength = txtContent.TextLength;
                flag = true;
                indexUndo = 0;از اول شروع شدن باز گشتن به یک مرحله قبل تر
            }
        }
void MyFileWriteAllText_WhitoutPath() متدی برای ذخیره متنی که آدرس ندارد یا قبلا ذخیره نشده باشد 
        {
            saveFileDialog1.DefaultExt = ".Text Document";دادن فرمت پیشفرض به برنامه
            if (File.Exists(path)) بررسی برای اینکه آیا فایل یا آدرس متن درست است و برای جلوگیری از خطای احتمالی
                saveFileDialog1.FileName = Path.GetFileNameWithoutExtension(path) + 
  Path.GetExtension(path);
            else
                saveFileDialog1.FileName = "*.txt";

            saveFileDialog1.Filter = "Text Documents|*.txt|All Files | *.*";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                path = saveFileDialog1.FileName;
                MyFileWrieAllText();
            }
        }
txtContent.TextLength == txtLength  این تکه کد ذخیره شدن متن را نشان میدهد
if (File.Exists(path)) این کد برای بررسی صحت وجود داشتن آدرس فایل است
frmAlert.lbl2Alert.Text = "Do you want to save Changes to\n" 
+ Path.GetFullPath(path) + ("?"); برای فهماندن فرم الرت که این متن قبلا ذخیره شده است.
if (frmAlert.ShowDialog() == DialogResult.OK)  برای بررسی اینکه آیا کاربر دکمه ذخیره را زده یا نه
SendKeys.Send("{End}"); این کلاس با گرفتن نام دکمه این دکمه را در برنامه اجرا میکند.
this.Close(); بسته شدن اون پنجره ای که باز است یا در حال اجراشدن است.
MnuCopy.Enabled = MnuCut.Enabled = MnuDelete.Enabled = 
MnuFindNext.Enabled = txtContent.SelectionLength > 0;

MnuPaste.Enabled = Clipboard.ContainsText();بررسی متن موجود در کلیپ بورد که آیا وجود دارد یا خیر
MnuFind.Enabled = MnuReplace.Enabled = txtContent.TextLength > 0;  
MnuUndo.Enabled = indexUndo > 0; 

if (txtContent.TextLength > 0) اگر متنی وجود داشت یا طول متن یا رشته بزرگتر از ۰ بود
if (!string.IsNullOrEmpty(txtContent.SelectedText))   اگر متنی توسط موس سلکت شده بود.

indexFind = txtContent.Text.IndexOf(txtContent.SelectedText, indexFind + 1, StringComparison.OrdinalIgnoreCase); شروع کردن به جستجو بر اساس آخرین متنی که پیدا شده باشد.

txtContent.Select(indexFind, txtContent.SelectedText.Length);دادن مختصات برای سلکت متن
 همه این کدها برای بدستن آوردن مختصات متن است که در پایین برنامه وجود دارد که  به آن STATUSBAR میگویند.
charIndex = txtContent.GetFirstCharIndexOfCurrentLine();
lineIndex = txtContent.GetLineFromCharIndex(charIndex);
charIndex = txtContent.SelectionStart - charIndex;
lblStripStatus.Text = "Ln " + (lineIndex + 1) + " ,Col " + (charIndex + 1);
این تکه کد ها برای ذخیره سازی فونت هستند که ممکنه بنا به دلایلی خطا در اون به وجود بیاد که در تکه کد try گذاشتیم که در LOAD آنها را دوباره بارگذاری کند.
try
  {
    string[] fontArry = new string[2];
    fontArry[0] = txtContent.Font.Name;
    fontArry[1] = txtContent.Font.Size.ToString();
    File.WriteAllLines("C:\\Users\\Mahdi\\Documents\\Setting.txt", fontArry);
  }

  catch
   {

   }

 برای اینکه متوجه شوید برنامه نوت پد در ویندوز فرم سی شارپ به چه صورتی نوشته شده ویدیو زیر رو ببینید

 

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

 

درباره نویسنده: administrator

ممکن است دوست داشته باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *