现在的位置: 首页 > 综合 > 正文

一个功能增强的记事本_VB.NET

2012年10月26日 ⁄ 综合 ⁄ 共 7202字 ⁄ 字号 评论关闭

想必大家都听说过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

基本上没用什么属性设置,都是靠代码实现的,由于功能十分简单,使用的是面向过程的方法实现,看起来简单点。

微软的记事本其实很简单,给大家开阔下思路。

需要完整源码的可以到这里下载:http://download.csdn.net/source/3412684

欢迎转载:http://blog.csdn.com/AngelHacker/

抱歉!评论已关闭.