Notepad Clone in .NET WinForms

Notepad Clone in C# .NET

I use notepad all the time, sometimes I just wanted to add one little feature, but it’s not extendable so I can’t. If I could just get my hands on the source code and if that source code was in C# I’d be set. So I decided to write a clone so I can do just that, and share it so that others could as well.

I attempted to make an exact clone and I think I did pretty good with three exceptions. One I decided I wanted a different icon so I can tell it apart from the actual notepad. Two, the real notepad has header and footer information as part of the page setup. I didn’t know how to do that since the page setup dialog is a system dialog. And three I didn’t try to duplicate the windows notepad help file.

As you can see from the screenshot it includes the following features:

  • File
    • New
    • Open
    • Save
    • Save As
    • Page Setup
    • Header & Footer (you can use variables to include filename, date, and other information)
    • Print
    • Exit
  • Edit
    • - Undo
    • - Cut
    • - Copy
    • - Paste
    • - Delete
    • - Find
      • Find next
      • Direction up/down
      • Match case
    • - Find Next
    • - Replace
      • Find next
      • Replace
      • Replace all
      • Match case
    •  Go To (a specific line number)
    •  Select All
    •  Time/Date (inserts the date and time e.g 9:18 PM 2/11/2014)
    • insert (e.g 9:18 PM 2/11/2014)
  • Format
    • Word Wrap
    • Font
  • View
    • Status bar (displays the line number and column number)
  • Help
    • View Help (you will have to provide your own documentation)
    • About Notepad Clone

Download Notepad Clone .NET Binary (exe)

Download Source Code

If you would like to be notified of future posts subscribe to my mailing list using the widget on the right.

Comments

  1. says

    i am new to c sharp and i am working on studying it .
    i hav been trying to built a notepad step by step studying different things in the process. one thing i havent found is to code the close button.
    its been done in your notepad
    could you please help me by letting me kno how u programmed the close button

    • says

      Hello KTBFFH, to answer your question accurately I would need details. But I’m guessing what you want is to get prompted to save your work if you try to close the application. The even you want to handle is the form close or closing event. It gives you an opportunity to cancel the close if you want. Note you can actually download the code and see exactly how I do it.

  2. says

    Hello,

    I made a similar clone of Notepad, for the same reasons, but mine was made in VB.Net, opposed to C#. Mine is available from Visual Studio’s extension gallery. I think that you should go through the process to submit yours there as well. Your version has a lot more features than mine, as I couldn’t manage to figure out the goto function and the status bar. I am currently working on a version that will include compiled HTML Help files, file encryption, a much improved replace all function(I just learned that string.replace existed), the goto feature, and other quirks available in MS Notepad; such as the .LOG function, and the different forms of encoding for files.

  3. says

    I am impressed by your work but I question the use of the word “clone”, which is an exact copy. I am very interested in this subject because I also love Notepad but needed some additional functionality.

    http://www.codeproject.com/Tips/563711/Encrypting-Editor-Notepad-replacement

    http://www.frank-t-clark.com/Professional/Papers/CryptPad/CryptPad.html

    I am constantly puzzled and frustrated by differences between my program’s operation compared to Notepad, which I am having great difficulty overcoming. I have consulted many different attempts by different people to make a clone or replacement. Almost all are very poor attempts. When I discovered your efforts I was impressed by how nearly complete your solution is.

    • says

      Hey Frank, thanks for taking the time to write.

      I checked out CryptPad it’s very good and it works as advertised.

      I tried my best to mimic Windows Notepad as much as possible and I’m open to any suggestions on how I can better accomplish that.

    • says

      LOL! The only solution I have found is to test, scratch my head, and write some more code. It is very time consuming and sometimes the solution is not clear. Notepad does some surprisingly sophisticated things. For example, the Undo function in Notepad has functionality not implemented in the standard Texbox control. Very difficult to duplicate without writing some massive code. Your program does not properly read files with ANSI characters as Notepad does. You don’t support encoding coversions, which Notepad does. Lots of little details. (Heavy sigh)

    • says

      Hey Frank, I added support for encoding conversion. While the actual encoding seems to be happening correctly, it doesn’t seem to be displayed the same way as notepad.

      The .NET code for detecting encoding seem to be able to distinguish between ANSI and UTF-8.

      This is definitely going to be a challenge.

      In the meanwhile I updated the files attached to this article with those changes.

    • says

      “It will be an interesting challenge.”

      What an understatement! The challenges seem to never end. The more I test my program the more differences I find and the harder it gets to correct them. Currently I am trying to figure out how to get the Edit, Delete function to Undo without writing a massive amount of code to brute force a solution. I believe there must be some simple procedure Notepad uses to get the textbox class to do the work, but I haven’t found it yet.

  4. says

    Hey i am new to Coding and c# so can you please make a Visual studio project for me instead of the source codes, so that i can open the project and run it and then edit it, thanks so much

    • says

      Hey Ash, There is no “solution” file packed with the source code, but there is a .csproj file. You should be able to open that file in Visual Studio to compile and run the project. Let me know if that works for you. Thanks.

    • says

      ok thanks, Can you please help me with one more thing. So my question is that you know how you have the file name on your Notepad Cloned up top that’s opened, so i was wondering if u can help me with that on Visual Basic.

      Please Help
      Thanks Ash

  5. says

    I am a newbie in c# ( though familiar with some other languages) and i wanted to send the text entered in notepad clone to the serial port.
    a google search revealed the code but where do i put it?

    • says

      Hey suvrat, there is no single right place to put it this is not so much a programming question then an application design question. The real question is when you want it to happen? How do you want the user to trigger it? Do you want it to replace save? In that case put it in place of the save code. Do you want it as a separate action? In that case add a menu item to the “File” menu called “Send to serial port” and add a click event to it. But really it’s up do you and where you think it makes sense for the user. Hope that helps.

  6. Steve G says

    Luis, I have to say this is probably the best “clone” around and helped me solve a few things I was trying to do in a small text editor. Good job and great contribution.

Leave a Reply