Here we will see the code to develop our own Notepad in C#.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace notpad

{

public partial class Form1 : Form

{

public SaveFileDialog sfd;//instance of savefiledialog to save files

public OpenFileDialog ofd;//instance of openfiledialog to open files

public int index;

#region "Constructor"

public Form1()//initialization in Constructor

{

InitializeComponent();

sfd = new SaveFileDialog();

ofd = new OpenFileDialog();

this.Text = "Untitled-Digital Diary";

richTextBox1.TabIndex = 5;

undoToolStripMenuItem.Enabled = false;

richTextBox1.Focus();

}

#endregion

#region "Menu Item"

private void newToolStripMenuItem_Click(object sender, EventArgs e)

{

sfd.Title = "Save";

DialogResult dr = MessageBox.Show("Do you want to save the file", "save", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (dr.Equals(DialogResult.Yes))//statement that execute when user click on yes button

{

SaveFile();//calling user defined function SaveFile function

//richTextBox1.Clear();

//this.Text = "Untitled-Digital Diary";

}

else if (dr.Equals(DialogResult.No))//statament that execute when user click on no button of dialog

{

richTextBox1.Clear();

this.Text = "Untitled-Digital Diary";

}

}

private void saveToolStripMenuItem_Click(object sender, EventArgs e)

{

SaveFile();//calling SaveFile user defined fucntion

}

private void openToolStripMenuItem_Click(object sender, EventArgs e)

{

if (richTextBox1.Modified == true)//checking either richtext box have entered value or not

{

DialogResult dr = MessageBox.Show("Do you want to save changes to the opened file", "unsaved document", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (dr == DialogResult.No)

{

richTextBox1.Modified = false;

OpenFile();//calling OpenFile user defined function

}

else

{

if (this.Text == "Untitled-Digital Diary")//checking form Title to Untitled-Digital Diary

{

///Calling SaveFile and OpenFile user defined functions

SaveFile();

OpenFile();

}

else

{

DialogResult dr1 = MessageBox.Show("the text in the file has been changed.Do you want to save the changes", "Open", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (dr1 == DialogResult.Yes)

{

richTextBox1.SaveFile(this.Text);

OpenFile();

}

else

{

OpenFile();

}

}

}

}

else

{

OpenFile();

}

}

private void exitToolStripMenuItem_Click(object sender, EventArgs e)

{

//statement that execute on click of exit button

//and chekcing whether textbox modified or not if modified

//then prompt user to save or not

if (richTextBox1.Modified == true)

{

DialogResult dr = MessageBox.Show("Do you want to save the file before exiting", "unsaved file", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (dr == DialogResult.Yes)

{

SaveFile();

richTextBox1.Modified = false;

Application.Exit();

}

else

{

richTextBox1.Modified = false;

Application.Exit();

}

}

}

private void toolStripButton1_Click(object sender, EventArgs e)

{

//calling SaveFile function

SaveFile();

}

private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)

{

sfd.Title = "Save As";

sfd.Filter = "Text Document|*.txt";

sfd.DefaultExt = "txt";

sfd.ShowDialog();

richTextBox1.SaveFile(sfd.FileName, RichTextBoxStreamType.PlainText);

this.Text = sfd.FileName;

}

private void cutToolStripMenuItem_Click(object sender, EventArgs e)

{

//performs Cut operation in richTextBox

richTextBox1.Cut();

}

private void pasteToolStripMenuItem_Click(object sender, EventArgs e)

{

//perform paste operation in richtextbox

richTextBox1.Paste();

}

private void copyToolStripMenuItem_Click(object sender, EventArgs e)

{

//perform copy operation

richTextBox1.Copy();

}

private void selectAllToolStripMenuItem_Click(object sender, EventArgs e)

{

//selecting all content or text in richtextbox

richTextBox1.SelectAll();

}

private void undoToolStripMenuItem_Click(object sender, EventArgs e)

{ //performs undo operation and checking user can undo or not

if (richTextBox1.CanUndo)

{

richTextBox1.Undo();

}

}

private void redoToolStripMenuItem_Click(object sender, EventArgs e)

{

//Redo

statusStrip1.Text = "used to redo last changed text";

if (richTextBox1.CanRedo)

{

richTextBox1.Redo();

}

}

private void timeDateToolStripMenuItem_Click(object sender, EventArgs e)

{

//putting or inserting current date time in richtextbox

richTextBox1.Text += Convert.ToString(DateTime.Now);

}

private void findToolStripMenuItem_Click(object sender, EventArgs e)

{

//calling and creating instance of findform and to search values

findform findob = new findform(this);

findob.Show();

}

private void fontToolStripMenuItem_Click(object sender, EventArgs e)

{

//setting richtextbox text font and color

FontDialog fd = new FontDialog();

fd.Font = richTextBox1.SelectionFont;

fd.Color = richTextBox1.SelectionColor;

if (fd.ShowDialog() == DialogResult.OK)

{

richTextBox1.SelectionFont = fd.Font;

richTextBox1.SelectionColor = fd.Color;

}

}

private void wordWrapToolStripMenuItem_Click(object sender, EventArgs e)

{

//performing wordwrap operation

if (wordWrapToolStripMenuItem.Checked == false)

{

wordWrapToolStripMenuItem.Checked = true;

richTextBox1.WordWrap = true;

}

else

{

wordWrapToolStripMenuItem.Checked = false;

richTextBox1.WordWrap = false;

}

}

private void toolStripTextBox1_Click(object sender, EventArgs e)

{

Gotoform gob = new Gotoform(this);

gob.Show();

}

private void statusBarToolStripMenuItem_Click(object sender, EventArgs e)

{ //statuslabel1.Text = "Cols " + richTextBox1.Text.Length;

}

private void findNextToolStripMenuItem_Click(object sender, EventArgs e)

{

findform f = new findform(this);

f.Show();

}

private void replaceToolStripMenuItem_Click(object sender, EventArgs e)

{

replaceform ob = new replaceform(this);

ob.Show();

}

private void addBulletToolStripMenuItem_Click(object sender, EventArgs e)

{

//putting bullets into richtextbox

try

{

richTextBox1.BulletIndent = 10;

richTextBox1.SelectionBullet = true;

}

catch (Exception ex)

{

MessageBox.Show(ex.Message.ToString(), "Error");

}

}

private void removeBulletToolStripMenuItem_Click(object sender, EventArgs e)

{

//removing bullets

try

{

richTextBox1.SelectionBullet = false;

}

catch (Exception ex)

{

MessageBox.Show(ex.Message.ToString(), "Error");

}

}

private void leftIndentationToolStripMenuItem_Click(object sender, EventArgs e)

{

//setting alignment of text into richtextbox

try

{

richTextBox1.SelectionAlignment = HorizontalAlignment.Left;

}

catch (Exception ex1)

{

MessageBox.Show(ex1.Message.ToString());

}

}

private void centerIntendationToolStripMenuItem_Click(object sender, EventArgs e)

{

try

{

richTextBox1.SelectionAlignment = HorizontalAlignment.Center;

}

catch (Exception ex1)

{

MessageBox.Show(ex1.Message.ToString());

}

}

private void rightIntendationToolStripMenuItem_Click(object sender, EventArgs e)

{

try

{

richTextBox1.SelectionAlignment = HorizontalAlignment.Right;

}

catch (Exception ex1)

{

MessageBox.Show(ex1.Message.ToString());

}

}

private void backGroundColorToolStripMenuItem_Click(object sender, EventArgs e)

{

//setting background color of richtextbox

ColorDialog cr = new ColorDialog();

if (cr.ShowDialog() == DialogResult.OK)

{

richTextBox1.BackColor = cr.Color;

}

}

private void toolStripTextBox2_Click(object sender, EventArgs e)

{

richTextBox1.SelectedText = "";

}

private void aboutToolStripMenuItem_Click(object sender, EventArgs e)

{

AboutBox1 ab = new AboutBox1();

ab.ShowDialog();

}

#endregion

#region "Function To Save File"

private void SaveFile()

{

//setting title of savefiledialog to Save As

sfd.Title = "Save As";

sfd.Filter = "Text Document|*.txt";//applied filter

sfd.DefaultExt = "txt";//applied default extension

if (sfd.ShowDialog() == DialogResult.OK)

{

// if (this.Text!= "Untitled-Digital Diary")

{

// richTextBox1.SaveFile(this.Text, RichTextBoxStreamType.PlainText);

//

}

// else if(this.Text=="Untitled-Digital Diary")

//

{

richTextBox1.SaveFile(sfd.FileName, RichTextBoxStreamType.PlainText);

this.Text = sfd.FileName;

// }

}

}

#endregion

#region "User Defined Function to Open File"

private void OpenFile()

{

//putting title of openfiledialog to Open Document

ofd.Title = "Open Document";

//ofd.DefaultExt = "txt";

ofd.Filter = "Text Files|*.txt";//appliing filter

ofd.FileName = string.Empty;//setting filename box to blank

if (ofd.ShowDialog() == DialogResult.OK)

{

if (ofd.FileName == String.Empty)

{

return;

}

else

{

//reading or loading selected file into richtextbox

string str = ofd.FileName;

richTextBox1.LoadFile(str,RichTextBoxStreamType.PlainText);

this.Text =ofd.FileName;

}

}

}

#endregion

//reading line and col number in richtextbox to statusstrip

private void richTextBox1_TextChanged(object sender, EventArgs e)

{

undoToolStripMenuItem.Enabled = true;

statuslabel1.Text = "Line: " + (richTextBox1.GetLineFromCharIndex(Int32.MaxValue)+1) + " Cols: " + richTextBox1.Text.Length;

}

#region "Printing"

private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e)

{

printPreviewDialog1.Document = printDocument1;

printPreviewDialog1.ShowDialog();

}

private void toolStripMenuItem1_Click(object sender, EventArgs e)

{

printDialog1.Document = printDocument1;

if (printDialog1.ShowDialog() == DialogResult.OK)

{

printDocument1.Print();

}

}

private void pageSetUPToolStripMenuItem_Click(object sender, EventArgs e)

{

pageSetupDialog1.Document = printDocument1;

pageSetupDialog1.ShowDialog();

}

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)

{

e.Graphics.DrawString(richTextBox1.Text, richTextBox1.Font, Brushes.Black, 100, 100);

}

#endregion

#region "Function For GoTo"

public void Goto(int line)//Goto line function to navigate user to line number

{

index = richTextBox1.GetFirstCharIndexFromLine(line - 1);

richTextBox1.Select(index, 0);

richTextBox1.Focus();

}

#endregion

#region "Function For FindNext"

public void FindNext(string str)//user defind function for Findig value into ichtextbox

//and perform search operaiton

{

try

{

// int result = richTextBox1.Find(str, index, str.Length, RichTextBoxFinds.WholeWord);

if (index== -1)

{

MessageBox.Show("Word Search Complete");

}

else

{

int starting = richTextBox1.Text.IndexOf(str, index);

richTextBox1.Select(starting, str.Length);

richTextBox1.Focus();

index = starting+ str.Length;

}

}

catch (SystemException s)

{

MessageBox.Show(s.Message.ToString(),"Error message");

}

}

#endregion

#region "Standard ToolBar Event"

private void toolStripButton6_Click(object sender, EventArgs e)

{

newToolStripMenuItem_Click(this, e);

}

private void toolStripButton5_Click(object sender, EventArgs e)

{

openToolStripMenuItem_Click(this, e);

}

private void printPreviewToolStripMenuItem1_Click(object sender, EventArgs e)

{

printPreviewToolStripMenuItem_Click(this, e);

}

private void pageSetUPToolStripMenuItem1_Click(object sender, EventArgs e)

{ pageSetUPToolStripMenuItem_Click(this, e);

}

private void toolStripButton4_Click(object sender, EventArgs e)

{ exitToolStripMenuItem_Click(this, e);

}

private void toolStripButton2_Click(object sender, EventArgs e)

{

backGroundColorToolStripMenuItem_Click(this, e);

}

private void toolStripButton3_Click(object sender, EventArgs e)

{

fontToolStripMenuItem_Click(this, e);

}

private void toolStripButton7_Click(object sender, EventArgs e)

{

addBulletToolStripMenuItem_Click(this, e);

}

private void toolStripButton8_Click(object sender, EventArgs e)

{

cutToolStripMenuItem_Click(this, e);

}

private void toolStripButton9_Click(object sender, EventArgs e)

{

copyToolStripMenuItem_Click(this, e);

}

private void toolStripButton10_Click(object sender, EventArgs e)

{

pasteToolStripMenuItem_Click(this, e);

}

#endregion

private void Form1_Load(object sender, EventArgs e)

{

}

}

}

Snapshot:

NOTEPAD.jpg