How to make a Text Editor in Visual Basic.Net
This article is about how to make a simple text editor like notepad using Visual Basic.Net. This text editor has almost all the functionality of a text editor like new, open, save, formatting, cut, copy paste and lot more functions.
In the previous article, I showed you how to create a calculator using Visual Basic.Net. In this article, I am going to show you how you can make a Text Editor in Visual Basic.Net.
This Text Editor has almost all the features of notepad. In this text editor, users can open any text file in the richtextbox. Users can also save the text file. Printing can also be done in this text editor.
The other Features of this text editor are: Undo, Redo, Cut, Copy, Paste, Find, Select All, Format, Wordwrap etc etc.
First we design an interface in VB.Net form as shown in the picture.
In the code window of the form write the code as under:
Imports System.IO
Imports System.Drawing.Printing
Public Class Form1
Dim clipboard As String
Private PrintPageSettings As New PageSettings()
Private StringToPrint As String
Private PrintFont As New Font("Arial", 10)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
RichTextBox1.WordWrap = False
RichTextBox1.ScrollBars = ScrollBars.Both
RichTextBox1.AcceptsTab = True
RichTextBox1.DetectUrls = True
End Sub
Private Sub NewToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewToolStripMenuItem.Click
If RichTextBox1.Text <> "" Then
Dim str As String
str = MsgBox("Do you want to save the change", MsgBoxStyle.YesNoCancel, "Notepad")
If str = MsgBoxResult.No Then
RichTextBox1.Text = ""
ElseIf str = MsgBoxResult.Yes Then
Beep()
ElseIf str = MsgBoxResult.Cancel Then
Beep()
Exit Sub
End If
End If
End Sub
Private Sub OpenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenToolStripMenuItem.Click
Dim diares As DialogResult
OpenFileDialog1.Filter = "txt Files (Text Files)|*.txt"
diares = OpenFileDialog1.ShowDialog
If diares = Windows.Forms.DialogResult.OK Then
RichTextBox1.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.PlainText)
End If
End Sub
Private Sub SaveToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripMenuItem.Click
Dim Result As DialogResult
SaveFileDialog1.Filter = "txt Files (Text Files)|*.txt"
Result = SaveFileDialog1.ShowDialog
If Result = Windows.Forms.DialogResult.OK Then
RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.PlainText)
End If
End Sub
Private Sub EndoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EndoToolStripMenuItem.Click
RichTextBox1.Undo()
End Sub
Private Sub CutToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CutToolStripMenuItem.Click
clipboard = RichTextBox1.SelectedText
RichTextBox1.Text = RichTextBox1.Text.Remove(RichTextBox1.SelectionStart, RichTextBox1.SelectionLength)
End Sub
Private Sub CopyToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CopyToolStripMenuItem.Click
clipboard = RichTextBox1.SelectedText
End Sub
Private Sub PasteToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PasteToolStripMenuItem.Click
RichTextBox1.Text = RichTextBox1.Text & clipboard
End Sub
Private Sub ClearToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClearToolStripMenuItem.Click
RichTextBox1.Text = RichTextBox1.Text.Remove(RichTextBox1.SelectionStart, RichTextBox1.SelectionLength)
End Sub
Private Sub FindToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FindToolStripMenuItem.Click
replace.Show()
End Sub
Private Sub FontToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FontToolStripMenuItem.Click
Dim Result As DialogResult
Result = FontDialog1.ShowDialog
If Result = Windows.Forms.DialogResult.OK Then
RichTextBox1.Font = FontDialog1.Font
End If
End Sub
Private Sub WordWrapToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WordWrapToolStripMenuItem.Click
Static x As Integer
If x = 0 Then
RichTextBox1.WordWrap = True
WordWrapToolStripMenuItem.CheckState = CheckState.Checked
RichTextBox1.ScrollBars = ScrollBars.Vertical
x = x + 1
ElseIf x = 1 Then
RichTextBox1.WordWrap = False
WordWrapToolStripMenuItem.CheckState = CheckState.Unchecked
RichTextBox1.ScrollBars = ScrollBars.Both
x = 0
End If
End Sub
Private Sub FontColorToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FontColorToolStripMenuItem.Click
If ColorDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
RichTextBox1.SelectionColor = ColorDialog1.Color
End If
End Sub
Private Sub LeftAlignToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LeftAlignToolStripMenuItem.Click
RichTextBox1.SelectionAlignment = HorizontalAlignment.Left
End Sub
Private Sub AlignRightToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AlignRightToolStripMenuItem.Click
RichTextBox1.SelectionAlignment = HorizontalAlignment.Right
End Sub
Private Sub AlignCenterToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AlignCenterToolStripMenuItem.Click
RichTextBox1.SelectionAlignment = HorizontalAlignment.Center
End Sub
Private Sub BulletsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BulletsToolStripMenuItem.Click
RichTextBox1.BulletIndent = 20
RichTextBox1.SelectionBullet = True
End Sub
Private Sub RemoveBulletsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RemoveBulletsToolStripMenuItem.Click
RichTextBox1.SelectionBullet = False
End Sub
Private Sub HelpToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HelpToolStripMenuItem1.Click
MsgBox("For Help Contact: sarfarazbhat@gmail.com", MsgBoxStyle.Information, "Wordpad Version 1.0")
End Sub
Private Sub PrintToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintToolStripMenuItem.Click
StringToPrint = RichTextBox1.Text
PrintDocument1.Print()
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim nchars As Integer
Dim nLines As Integer
Dim txtforpage As String
Dim strFormat As New StringFormat()
Dim PrintFont As Font
PrintFont = RichTextBox1.Font
Dim rectDraw As New RectangleF(e.MarginBounds.Left, e.MarginBounds.Top, e.MarginBounds.Width, e.MarginBounds.Height)
Dim sizeMeasure As New SizeF(e.MarginBounds.Width, e.MarginBounds.Height - PrintFont.GetHeight(e.Graphics))
strFormat.Trimming = StringTrimming.Word
e.Graphics.MeasureString(StringToPrint, PrintFont, sizeMeasure, strFormat, nchars, nLines)
txtforpage = StringToPrint.Substring(0, nchars)
e.Graphics.DrawString(txtforpage, PrintFont, Brushes.Black, rectDraw, strFormat)
If nchars < StringToPrint.Length Then
StringToPrint = StringToPrint.Substring(nchars)
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End Sub
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
End
End Sub
End Class
I hope you will like this text editor.
Regards
Keep Coding
This is the best tut I've seen on this topic. Sorted out a puzzle for me that I could not fathom in two days; looked on here and got my answer in two minutes flat. Thank you very much for this gem!