Click here to Skip to main content
13,660,911 members
Click here to Skip to main content
Add your own
alternative version


39 bookmarked
Posted 26 Apr 2008
Licenced CPOL

Notepad.NET - Creating a clone of notepad in Visual Basic

, 3 May 2008
Rate this:
Please Sign up or sign in to vote.
Creating a clone of notepad in Visual Basic


This is a simple and fully functional clone of the standard Windows Notepad. The article describes about the functions used in Notepad and tells the logic to write the code. Code is also provided


Notepad basically has File, Edit, Format, View and Help.

I have recreated the menus File, Edit, Format and Help. I have excluded View menu because I think a simple notepad Application doesn't require any status bar. If you think you need a status bar, I've also provided the code for it.

Using the code

File Menu

New - If the document is modified then a Message Box with the buttons Yes and No is displayed asking whether it should be saved or not. Code is :

If doc.Modified = True Then
            Dim x As Integer = MsgBox("Do you want to save the modified document ?", MsgBoxStyle.YesNo)
            If x = vbYes Then
                Me.Text = "Untitled - Notepad.NET"
            End If
            Me.Text = "Untitled - Notepad.NET"

        End If          

Open - File is opened and Notepad.NET uses Rijndael encryption - HEX is encoding type. I have took a Cryptography class from this site called "Crypto.vb". I have implemented this to decrypt the data in the TextBox doc.

Save - File is saved using the same encryption algorithm.


A PageSetupDialog is also used.

Edit menu has the standard Cut, Copy, Paste, Undo etc.

When it came to the part of Find, Find Next and Replace, It was a big confusion and there was a difficulty doing it. But I turned up successfully with it.

Logic and Code of both Find and Replace

First I created a function called FindText with a dependency on the start_pos (declared as Integer). This is the starting position. Then I declared two private variables - target_pos (integer for determining the target's position) and target (declared as string).

Then I declared pos as integer

Pos is assigned to the function InStr that determines the position of the text.

So if pos is above 0 then text is found. So to select text, target_pos is assigned to ps.

The selection was a quite a difficulty for me.

The textbox's SelectionStart property determines the starting position. So it is target_pos minus 1. The selection goes up to the end. So the SelectionLength property is set to


If its not found , Clear the target variable and display message that text is not found.

Ain't it easy ???

The code I came up with is :

The code is as following

Private Sub FindText(ByVal start_pos as integer)
 Dim pos As Integer

        pos = InStr(start_pos, doc.Text.ToLower, tf.Text.ToLower)
        If pos > 0 Then
            target_pos = pos
            doc.SelectionStart = target_pos - 1
            doc.SelectionLength = Len(target) - (Len(target) - Len(target))

            MsgBox("Text Not Found")
            target = ""
        End If

End Sub    

   target = InputBox("Enter Word to find")

        If doc.SelectedText <> target Then

            x = InputBox(String.Format("Selected text is : {0}. Enter text to replace", target))
            doc.SelectedText = x
        End If

The above is the code for Replace.

Word Wrap is a default property of the textbox.

Code for FindNext is also simple

Just add 1 to target_pos.

So code will be

FindText(target_pos + 1)

Font can be changed by declaring a new FontDialog, assigning the selected font to the textbox font and textbox fontstyle to the dialog's selected style.

Thats All.

Simple isn't it ?

If you think new functions can be added, please comment so I will receive a notification and respond as soon as possible.

<script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> var pageTracker = _gat._getTracker("UA-2980480-6"); pageTracker._initData(); pageTracker._trackPageview(); </script>


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Anshul R
India India
No Biography provided

You may also be interested in...

Comments and Discussions

Questionquestion about project Pin
Member 113466521-Jan-15 8:06
memberMember 113466521-Jan-15 8:06 
Questionvery nice Pin
ibasskung16-Jul-14 0:25
memberibasskung16-Jul-14 0:25 
QuestionC# version Pin
luisperezphd1-Aug-12 4:56
memberluisperezphd1-Aug-12 4:56 
GeneralMy vote of 2 Pin
hadree21-Mar-12 0:03
memberhadree21-Mar-12 0:03 
GeneralNotepad with Pin
PramodKandpal17-Jan-12 22:50
memberPramodKandpal17-Jan-12 22:50 
GeneralRe: Notepad with Pin
luisperezphd1-Aug-12 4:56
memberluisperezphd1-Aug-12 4:56 
GeneralNo problem Pin
TL Wallace6-Dec-08 18:44
memberTL Wallace6-Dec-08 18:44 
Question.LOG Files? Pin
Gulsath30-Jun-08 8:02
memberGulsath30-Jun-08 8:02 
AnswerRe: .LOG Files? Pin
Gulsath30-Jun-08 8:12
memberGulsath30-Jun-08 8:12 
AnswerRe: .LOG Files? Pin
pranav951-Jul-08 4:09
memberpranav951-Jul-08 4:09 
GeneralRe: .LOG Files? Pin
Gulsath1-Jul-08 7:32
memberGulsath1-Jul-08 7:32 
GeneralRe: .LOG Files? Pin
pranav952-Jul-08 4:04
memberpranav952-Jul-08 4:04 
GeneralUpdated Pin
pranav953-May-08 23:46
memberpranav953-May-08 23:46 
GeneralNot up to mark but Pin
Maruf Maniruzzaman27-Apr-08 4:32
memberMaruf Maniruzzaman27-Apr-08 4:32 
The writer claims that he is 11 years old in another article. If it is really the case I'd say he is going to be a super performing person. I'd recommend to practice some more and read a lot of articles on codeproject and then come and win. Good luck.

Maruf Maniruzzaman
Dhaka, Bangladesh.
[Blog] [Silverlight Clone] [Resume]

GeneralRe: Not up to mark but Pin
Jeffrey Walton27-Apr-08 4:50
mvpJeffrey Walton27-Apr-08 4:50 
GeneralRe: Not up to mark but Pin
pranav953-May-08 22:04
memberpranav953-May-08 22:04 
GeneralNeeds work Pin
Rob Graham27-Apr-08 3:29
memberRob Graham27-Apr-08 3:29 
GeneralRe: Needs work Pin
pranav953-May-08 22:10
memberpranav953-May-08 22:10 
QuestionWhich is it? Pin
John Simmons / outlaw programmer27-Apr-08 1:42
mvpJohn Simmons / outlaw programmer27-Apr-08 1:42 
AnswerRe: Which is it? Pin
Paul Conrad27-Apr-08 4:29
memberPaul Conrad27-Apr-08 4:29 
GeneralRe: Which is it? Pin
pranav953-May-08 22:14
memberpranav953-May-08 22:14 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Cookies | Terms of Use | Mobile
Web01-2016 | 2.8.180810.1 | Last Updated 4 May 2008
Article Copyright 2008 by Anshul R
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid