想必大家都听说过Notepad2,Notepad++一类的记事本增强软件,想自己也写一个吗?
今天教大家用用VB.NET写了一个功能增强的记事本(支持全文字数统计、选中部分字数统计、支持doc、rtf格式等)
先上图:

感觉如果不错的话,看看源码吧:
- Public Class MainForm
- Dim FileName As String = "无标题"
- Dim word As String = ""
- Dim ML As Boolean = False
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Me.StartPosition = FormStartPosition.CenterScreen
- Me.Text = FileName + " - " + "记事本——AngelHacker"
- RichTextBox1.WordWrap = False
- RichTextBox1.ContextMenuStrip = ContextMenuStrip1
- RichTextBox1.ScrollBars = RichTextBoxScrollBars.Both
- 新建NToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.N
- 打开OToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.O
- 保存SToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.S
- 剪切TToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.X
- 复制CToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.C
- 粘贴PToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.V
- 全选AToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.A
- 删除LToolStripMenuItem.ShortcutKeys = Keys.Delete
- 查找FToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.F
- 查找下一个NToolStripMenuItem.ShortcutKeys = Keys.F3
- 查找下一个NToolStripMenuItem.Enabled = False
- End Sub
- Private Sub 新建NToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 新建NToolStripMenuItem.Click
- RichTextBox1.Text = ""
- FileName = "无标题"
- Me.Text = FileName + " - " + "记事本——AngelHacker"
- End Sub
- Private Sub 打开OToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 打开OToolStripMenuItem.Click
- OpenFileDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"
- OpenFileDialog1.FileName = ""
- If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
- Exit Sub
- Else
- RichTextBox1.Text = ""
- FileName = OpenFileDialog1.FileName
- Select Case OpenFileDialog1.FilterIndex
- Case "1"
- RichTextBox1.LoadFile(FileName, RichTextBoxStreamType.PlainText)
- Case "2"
- RichTextBox1.LoadFile(FileName, RichTextBoxStreamType.RichText)
- Case Else
- On Error GoTo txt
- RichTextBox1.LoadFile(FileName)
- End Select
- Me.Text = FileName + " - " + "记事本——AngelHacker"
- End If
- Exit Sub
- txt:
- RichTextBox1.LoadFile(FileName, RichTextBoxStreamType.PlainText)
- End Sub
- Private Sub 保存SToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 保存SToolStripMenuItem.Click
- If Me.Text = "无标题 - 记事本——AngelHacker" Then
- SaveFileDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"
- SaveFileDialog1.FileName = ""
- SaveFileDialog1.CheckPathExists = True
- If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
- Exit Sub
- Else
- Select Case SaveFileDialog1.FilterIndex
- Case "1"
- RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.PlainText)
- Case "2"
- RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.RichText)
- Case Else
- RichTextBox1.SaveFile(SaveFileDialog1.FileName)
- End Select
- Me.Text = SaveFileDialog1.FileName + " - " + "记事本——AngelHacker"
- End If
- Else
- Select Case Mid(Me.Text, Me.Text.Length - 21, 3)
- Case "txt"
- RichTextBox1.SaveFile(Mid(Me.Text, 1, Me.Text.Length - 18), RichTextBoxStreamType.PlainText)
- Case "rtf"
- RichTextBox1.SaveFile(Mid(Me.Text, 1, Me.Text.Length - 18), RichTextBoxStreamType.RichText)
- Case Else
- RichTextBox1.SaveFile(Mid(Me.Text, 1, Me.Text.Length - 18))
- End Select
- End If
- End Sub
- Private Sub 另存为AToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 另存为AToolStripMenuItem.Click
- SaveFileDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"
- SaveFileDialog1.FileName = ""
- SaveFileDialog1.CheckPathExists = True
- If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
- Exit Sub
- Else
- Select Case SaveFileDialog1.FilterIndex
- Case "1"
- RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.PlainText)
- Case "2"
- RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.RichText)
- Case Else
- RichTextBox1.SaveFile(SaveFileDialog1.FileName)
- End Select
- Me.Text = SaveFileDialog1.FileName + " - " + "记事本——AngelHacker"
- End If
- End Sub
- Private Sub 退出XToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 退出XToolStripMenuItem.Click
- End
- End Sub
- Private Sub 重置UToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 重置UToolStripMenuItem.Click, 重置UToolStripMenuItem1.Click
- RichTextBox1.Text = ""
- RichTextBox1.SelectionStart = 1
- word = ""
- 查找下一个NToolStripMenuItem.Enabled = False
- RichTextBox1.Font = Font
- End Sub
- Private Sub 剪切TToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 剪切TToolStripMenuItem.Click, 剪切TToolStripMenuItem1.Click
- RichTextBox1.Cut()
- End Sub
- Private Sub 复制CToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 复制CToolStripMenuItem.Click, 复制CToolStripMenuItem1.Click
- RichTextBox1.Copy()
- End Sub
- Private Sub 粘贴PToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 粘贴PToolStripMenuItem.Click, 粘贴PToolStripMenuItem1.Click
- RichTextBox1.Paste()
- End Sub
- Private Sub 全选AToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 全选AToolStripMenuItem.Click, 全选AToolStripMenuItem1.Click
- RichTextBox1.SelectAll()
- End Sub
- Private Sub 删除LToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 删除LToolStripMenuItem.Click, 删除DToolStripMenuItem.Click
- RichTextBox1.Text = RichTextBox1.Text.Remove(RichTextBox1.SelectionStart, RichTextBox1.SelectionLength)
- End Sub
- Private Sub 字数统计ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 字数统计ToolStripMenuItem.Click, 字数统计SToolStripMenuItem.Click
- If RichTextBox1.SelectedText = "" Then
- MsgBox("全文共" + RichTextBox1.TextLength.ToString + "字符")
- Else
- MsgBox("选中的字符数为" + RichTextBox1.SelectionLength.ToString)
- End If
- End Sub
- Private Sub 自动换行WToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 自动换行WToolStripMenuItem.Click
- If ML = False Then
- RichTextBox1.WordWrap = True
- 自动换行WToolStripMenuItem.Checked = True
- ML = True
- Else
- RichTextBox1.WordWrap = False
- 自动换行WToolStripMenuItem.Checked = False
- ML = False
- End If
- End Sub
- Private Sub 关于AToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 关于AToolStripMenuItem.Click
- AboutBox1.ShowDialog()
- End Sub
- Private Sub 字体FToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 字体FToolStripMenuItem.Click
- If FontDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
- Exit Sub
- Else
- RichTextBox1.Font = FontDialog1.Font
- End If
- End Sub
- Private Sub 查找FToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 查找FToolStripMenuItem.Click
- word = InputBox("查找内容", "查找")
- If word = "" Then
- Exit Sub
- Else
- Dim a As Integer = RichTextBox1.Find(word, RichTextBox1.SelectionStart, RichTextBoxFinds.MatchCase)
- If a = -1 Then
- MsgBox("找不到" + """" + word + """")
- Else
- 查找下一个NToolStripMenuItem.Enabled = True
- Exit Sub
- End If
- End If
- End Sub
- Private Sub 查找下一个NToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 查找下一个NToolStripMenuItem.Click
- Dim wz As Integer
- If RichTextBox1.SelectionStart = RichTextBox1.TextLength Then
- MsgBox("找不到" + """" + word + """")
- Else
- wz = RichTextBox1.SelectionStart
- wz += 1
- Dim a As Integer = RichTextBox1.Find(word, wz, RichTextBoxFinds.MatchCase)
- If a = -1 Then
- MsgBox("找不到" + """" + word + """")
- Else
- Exit Sub
- End If
- End If
- End Sub
- Private Sub 时间日期DToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 时间日期DToolStripMenuItem.Click
- If ML = False Then
- RichTextBox1.Text += Date.Now
- Else
- RichTextBox1.Text += Chr(13) & Chr(10) & Date.Now
- End If
- End Sub
- End Class
Public Class MainForm
Dim FileName As String = "无标题"
Dim word As String = ""
Dim ML As Boolean = False
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.StartPosition = FormStartPosition.CenterScreen
Me.Text = FileName + " - " + "记事本——AngelHacker"
RichTextBox1.WordWrap = False
RichTextBox1.ContextMenuStrip = ContextMenuStrip1
RichTextBox1.ScrollBars = RichTextBoxScrollBars.Both
新建NToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.N
打开OToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.O
保存SToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.S
剪切TToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.X
复制CToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.C
粘贴PToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.V
全选AToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.A
删除LToolStripMenuItem.ShortcutKeys = Keys.Delete
查找FToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.F
查找下一个NToolStripMenuItem.ShortcutKeys = Keys.F3
查找下一个NToolStripMenuItem.Enabled = False
End Sub
Private Sub 新建NToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 新建NToolStripMenuItem.Click
RichTextBox1.Text = ""
FileName = "无标题"
Me.Text = FileName + " - " + "记事本——AngelHacker"
End Sub
Private Sub 打开OToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 打开OToolStripMenuItem.Click
OpenFileDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"
OpenFileDialog1.FileName = ""
If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
Exit Sub
Else
RichTextBox1.Text = ""
FileName = OpenFileDialog1.FileName
Select Case OpenFileDialog1.FilterIndex
Case "1"
RichTextBox1.LoadFile(FileName, RichTextBoxStreamType.PlainText)
Case "2"
RichTextBox1.LoadFile(FileName, RichTextBoxStreamType.RichText)
Case Else
On Error GoTo txt
RichTextBox1.LoadFile(FileName)
End Select
Me.Text = FileName + " - " + "记事本——AngelHacker"
End If
Exit Sub
txt:
RichTextBox1.LoadFile(FileName, RichTextBoxStreamType.PlainText)
End Sub
Private Sub 保存SToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 保存SToolStripMenuItem.Click
If Me.Text = "无标题 - 记事本——AngelHacker" Then
SaveFileDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"
SaveFileDialog1.FileName = ""
SaveFileDialog1.CheckPathExists = True
If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
Exit Sub
Else
Select Case SaveFileDialog1.FilterIndex
Case "1"
RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.PlainText)
Case "2"
RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.RichText)
Case Else
RichTextBox1.SaveFile(SaveFileDialog1.FileName)
End Select
Me.Text = SaveFileDialog1.FileName + " - " + "记事本——AngelHacker"
End If
Else
Select Case Mid(Me.Text, Me.Text.Length - 21, 3)
Case "txt"
RichTextBox1.SaveFile(Mid(Me.Text, 1, Me.Text.Length - 18), RichTextBoxStreamType.PlainText)
Case "rtf"
RichTextBox1.SaveFile(Mid(Me.Text, 1, Me.Text.Length - 18), RichTextBoxStreamType.RichText)
Case Else
RichTextBox1.SaveFile(Mid(Me.Text, 1, Me.Text.Length - 18))
End Select
End If
End Sub
Private Sub 另存为AToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 另存为AToolStripMenuItem.Click
SaveFileDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"
SaveFileDialog1.FileName = ""
SaveFileDialog1.CheckPathExists = True
If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
Exit Sub
Else
Select Case SaveFileDialog1.FilterIndex
Case "1"
RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.PlainText)
Case "2"
RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.RichText)
Case Else
RichTextBox1.SaveFile(SaveFileDialog1.FileName)
End Select
Me.Text = SaveFileDialog1.FileName + " - " + "记事本——AngelHacker"
End If
End Sub
Private Sub 退出XToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 退出XToolStripMenuItem.Click
End
End Sub
Private Sub 重置UToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 重置UToolStripMenuItem.Click, 重置UToolStripMenuItem1.Click
RichTextBox1.Text = ""
RichTextBox1.SelectionStart = 1
word = ""
查找下一个NToolStripMenuItem.Enabled = False
RichTextBox1.Font = Font
End Sub
Private Sub 剪切TToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 剪切TToolStripMenuItem.Click, 剪切TToolStripMenuItem1.Click
RichTextBox1.Cut()
End Sub
Private Sub 复制CToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 复制CToolStripMenuItem.Click, 复制CToolStripMenuItem1.Click
RichTextBox1.Copy()
End Sub
Private Sub 粘贴PToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 粘贴PToolStripMenuItem.Click, 粘贴PToolStripMenuItem1.Click
RichTextBox1.Paste()
End Sub
Private Sub 全选AToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 全选AToolStripMenuItem.Click, 全选AToolStripMenuItem1.Click
RichTextBox1.SelectAll()
End Sub
Private Sub 删除LToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 删除LToolStripMenuItem.Click, 删除DToolStripMenuItem.Click
RichTextBox1.Text = RichTextBox1.Text.Remove(RichTextBox1.SelectionStart, RichTextBox1.SelectionLength)
End Sub
Private Sub 字数统计ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 字数统计ToolStripMenuItem.Click, 字数统计SToolStripMenuItem.Click
If RichTextBox1.SelectedText = "" Then
MsgBox("全文共" + RichTextBox1.TextLength.ToString + "字符")
Else
MsgBox("选中的字符数为" + RichTextBox1.SelectionLength.ToString)
End If
End Sub
Private Sub 自动换行WToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 自动换行WToolStripMenuItem.Click
If ML = False Then
RichTextBox1.WordWrap = True
自动换行WToolStripMenuItem.Checked = True
ML = True
Else
RichTextBox1.WordWrap = False
自动换行WToolStripMenuItem.Checked = False
ML = False
End If
End Sub
Private Sub 关于AToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 关于AToolStripMenuItem.Click
AboutBox1.ShowDialog()
End Sub
Private Sub 字体FToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 字体FToolStripMenuItem.Click
If FontDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
Exit Sub
Else
RichTextBox1.Font = FontDialog1.Font
End If
End Sub
Private Sub 查找FToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 查找FToolStripMenuItem.Click
word = InputBox("查找内容", "查找")
If word = "" Then
Exit Sub
Else
Dim a As Integer = RichTextBox1.Find(word, RichTextBox1.SelectionStart, RichTextBoxFinds.MatchCase)
If a = -1 Then
MsgBox("找不到" + """" + word + """")
Else
查找下一个NToolStripMenuItem.Enabled = True
Exit Sub
End If
End If
End Sub
Private Sub 查找下一个NToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 查找下一个NToolStripMenuItem.Click
Dim wz As Integer
If RichTextBox1.SelectionStart = RichTextBox1.TextLength Then
MsgBox("找不到" + """" + word + """")
Else
wz = RichTextBox1.SelectionStart
wz += 1
Dim a As Integer = RichTextBox1.Find(word, wz, RichTextBoxFinds.MatchCase)
If a = -1 Then
MsgBox("找不到" + """" + word + """")
Else
Exit Sub
End If
End If
End Sub
Private Sub 时间日期DToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 时间日期DToolStripMenuItem.Click
If ML = False Then
RichTextBox1.Text += Date.Now
Else
RichTextBox1.Text += Chr(13) & Chr(10) & Date.Now
End If
End Sub
End Class
基本上没用什么属性设置,都是靠代码实现的,由于功能十分简单,使用的是面向过程的方法实现,看起来简单点。
微软的记事本其实很简单,给大家开阔下思路。
需要完整源码的可以到这里下载:http://download.youkuaiyun.com/source/3412684
http://wenku.baidu.com/view/8dadb7ea998fcc22bcd10d8a.html
欢迎转载:http://blog.csdn.com/AngelHacker/
本文介绍如何使用VB.NET开发一款功能增强的记事本应用,包括全文字数统计、选中部分字数统计等功能,并支持doc和rtf格式文件。
5824

被折叠的 条评论
为什么被折叠?



