VB.NET完成一个功能增强的记事本

来源:互联网 发布:windows live最新版 编辑:程序博客网 时间:2024/05/22 13:17
原址:http://blog.csdn.net/crcr/article/details/6581033
想必大家都听说过Notepad2,Notepad++一类的记事本增强软件,想自己也写一个吗?

今天教大家用用VB.NET写了一个功能增强的记事本(支持全文字数统计、选中部分字数统计、支持doc、rtf格式等)

先上图:


感觉如果不错的话,看看源码吧:

[vb] view plaincopy
  1. Public Class MainForm  
  2.     Dim FileName As String = "无标题"  
  3.     Dim word As String = ""  
  4.     Dim ML As Boolean = False  
  5.   
  6.     Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load  
  7.         Me.StartPosition = FormStartPosition.CenterScreen  
  8.         Me.Text = FileName + " - " + "记事本——AngelHacker"  
  9.         RichTextBox1.WordWrap = False  
  10.         RichTextBox1.ContextMenuStrip = ContextMenuStrip1  
  11.         RichTextBox1.ScrollBars = RichTextBoxScrollBars.Both  
  12.         新建NToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.N  
  13.         打开OToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.O  
  14.         保存SToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.S  
  15.         剪切TToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.X  
  16.         复制CToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.C  
  17.         粘贴PToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.V  
  18.         全选AToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.A  
  19.         删除LToolStripMenuItem.ShortcutKeys = Keys.Delete  
  20.         查找FToolStripMenuItem.ShortcutKeys = Keys.Control + Keys.F  
  21.         查找下一个NToolStripMenuItem.ShortcutKeys = Keys.F3  
  22.         查找下一个NToolStripMenuItem.Enabled = False  
  23.     End Sub  
  24.   
  25.     Private Sub 新建NToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 新建NToolStripMenuItem.Click  
  26.         RichTextBox1.Text = ""  
  27.         FileName = "无标题"  
  28.         Me.Text = FileName + " - " + "记事本——AngelHacker"  
  29.     End Sub  
  30.   
  31.     Private Sub 打开OToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 打开OToolStripMenuItem.Click  
  32.         OpenFileDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"  
  33.         OpenFileDialog1.FileName = ""  
  34.         If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then  
  35.             Exit Sub  
  36.         Else  
  37.             RichTextBox1.Text = ""  
  38.             FileName = OpenFileDialog1.FileName  
  39.             Select Case OpenFileDialog1.FilterIndex  
  40.                 Case "1"  
  41.                     RichTextBox1.LoadFile(FileName, RichTextBoxStreamType.PlainText)  
  42.                 Case "2"  
  43.                     RichTextBox1.LoadFile(FileName, RichTextBoxStreamType.RichText)  
  44.                 Case Else  
  45.                     On Error GoTo txt  
  46.                     RichTextBox1.LoadFile(FileName)  
  47.             End Select  
  48.             Me.Text = FileName + " - " + "记事本——AngelHacker"  
  49.         End If  
  50.         Exit Sub  
  51. txt:  
  52.         RichTextBox1.LoadFile(FileName, RichTextBoxStreamType.PlainText)  
  53.     End Sub  
  54.   
  55.     Private Sub 保存SToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 保存SToolStripMenuItem.Click  
  56.         If Me.Text = "无标题 - 记事本——AngelHacker" Then  
  57.             SaveFileDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"  
  58.             SaveFileDialog1.FileName = ""  
  59.             SaveFileDialog1.CheckPathExists = True  
  60.             If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then  
  61.                 Exit Sub  
  62.             Else  
  63.                 Select Case SaveFileDialog1.FilterIndex  
  64.                     Case "1"  
  65.                         RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.PlainText)  
  66.                     Case "2"  
  67.                         RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.RichText)  
  68.                     Case Else  
  69.                         RichTextBox1.SaveFile(SaveFileDialog1.FileName)  
  70.                 End Select  
  71.                 Me.Text = SaveFileDialog1.FileName + " - " + "记事本——AngelHacker"  
  72.             End If  
  73.         Else  
  74.             Select Case Mid(Me.Text, Me.Text.Length - 21, 3)  
  75.                 Case "txt"  
  76.                     RichTextBox1.SaveFile(Mid(Me.Text, 1, Me.Text.Length - 18), RichTextBoxStreamType.PlainText)  
  77.                 Case "rtf"  
  78.                     RichTextBox1.SaveFile(Mid(Me.Text, 1, Me.Text.Length - 18), RichTextBoxStreamType.RichText)  
  79.                 Case Else  
  80.                     RichTextBox1.SaveFile(Mid(Me.Text, 1, Me.Text.Length - 18))  
  81.             End Select  
  82.         End If  
  83.     End Sub  
  84.   
  85.     Private Sub 另存为AToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 另存为AToolStripMenuItem.Click  
  86.         SaveFileDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"  
  87.         SaveFileDialog1.FileName = ""  
  88.         SaveFileDialog1.CheckPathExists = True  
  89.         If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then  
  90.             Exit Sub  
  91.         Else  
  92.             Select Case SaveFileDialog1.FilterIndex  
  93.                 Case "1"  
  94.                     RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.PlainText)  
  95.                 Case "2"  
  96.                     RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.RichText)  
  97.                 Case Else  
  98.                     RichTextBox1.SaveFile(SaveFileDialog1.FileName)  
  99.             End Select  
  100.             Me.Text = SaveFileDialog1.FileName + " - " + "记事本——AngelHacker"  
  101.         End If  
  102.     End Sub  
  103.   
  104.     Private Sub 退出XToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 退出XToolStripMenuItem.Click  
  105.         End  
  106.     End Sub  
  107.   
  108.     Private Sub 重置UToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 重置UToolStripMenuItem.Click, 重置UToolStripMenuItem1.Click  
  109.         RichTextBox1.Text = ""  
  110.         RichTextBox1.SelectionStart = 1  
  111.         word = ""  
  112.         查找下一个NToolStripMenuItem.Enabled = False  
  113.         RichTextBox1.Font = Font  
  114.     End Sub  
  115.   
  116.     Private Sub 剪切TToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 剪切TToolStripMenuItem.Click, 剪切TToolStripMenuItem1.Click  
  117.         RichTextBox1.Cut()  
  118.     End Sub  
  119.   
  120.     Private Sub 复制CToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 复制CToolStripMenuItem.Click, 复制CToolStripMenuItem1.Click  
  121.         RichTextBox1.Copy()  
  122.     End Sub  
  123.   
  124.     Private Sub 粘贴PToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 粘贴PToolStripMenuItem.Click, 粘贴PToolStripMenuItem1.Click  
  125.         RichTextBox1.Paste()  
  126.     End Sub  
  127.   
  128.     Private Sub 全选AToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 全选AToolStripMenuItem.Click, 全选AToolStripMenuItem1.Click  
  129.         RichTextBox1.SelectAll()  
  130.     End Sub  
  131.   
  132.     Private Sub 删除LToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 删除LToolStripMenuItem.Click, 删除DToolStripMenuItem.Click  
  133.         RichTextBox1.Text = RichTextBox1.Text.Remove(RichTextBox1.SelectionStart, RichTextBox1.SelectionLength)  
  134.     End Sub  
  135.   
  136.     Private Sub 字数统计ToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 字数统计ToolStripMenuItem.Click, 字数统计SToolStripMenuItem.Click  
  137.         If RichTextBox1.SelectedText = "" Then  
  138.             MsgBox("全文共" + RichTextBox1.TextLength.ToString + "字符")  
  139.         Else  
  140.             MsgBox("选中的字符数为" + RichTextBox1.SelectionLength.ToString)  
  141.         End If  
  142.     End Sub  
  143.   
  144.     Private Sub 自动换行WToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 自动换行WToolStripMenuItem.Click  
  145.         If ML = False Then  
  146.             RichTextBox1.WordWrap = True  
  147.             自动换行WToolStripMenuItem.Checked = True  
  148.             ML = True  
  149.         Else  
  150.             RichTextBox1.WordWrap = False  
  151.             自动换行WToolStripMenuItem.Checked = False  
  152.             ML = False  
  153.         End If  
  154.     End Sub  
  155.   
  156.     Private Sub 关于AToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 关于AToolStripMenuItem.Click  
  157.         AboutBox1.ShowDialog()  
  158.     End Sub  
  159.   
  160.     Private Sub 字体FToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 字体FToolStripMenuItem.Click  
  161.         If FontDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then  
  162.             Exit Sub  
  163.         Else  
  164.             RichTextBox1.Font = FontDialog1.Font  
  165.         End If  
  166.     End Sub  
  167.   
  168.     Private Sub 查找FToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 查找FToolStripMenuItem.Click  
  169.         word = InputBox("查找内容""查找")  
  170.         If word = "" Then  
  171.             Exit Sub  
  172.         Else  
  173.             Dim a As Integer = RichTextBox1.Find(word, RichTextBox1.SelectionStart, RichTextBoxFinds.MatchCase)  
  174.             If a = -1 Then  
  175.                 MsgBox("找不到" + """" + word + """")  
  176.             Else  
  177.                 查找下一个NToolStripMenuItem.Enabled = True  
  178.                 Exit Sub  
  179.             End If  
  180.         End If  
  181.     End Sub  
  182.   
  183.     Private Sub 查找下一个NToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 查找下一个NToolStripMenuItem.Click  
  184.         Dim wz As Integer  
  185.         If RichTextBox1.SelectionStart = RichTextBox1.TextLength Then  
  186.             MsgBox("找不到" + """" + word + """")  
  187.         Else  
  188.             wz = RichTextBox1.SelectionStart  
  189.             wz += 1  
  190.             Dim a As Integer = RichTextBox1.Find(word, wz, RichTextBoxFinds.MatchCase)  
  191.             If a = -1 Then  
  192.                 MsgBox("找不到" + """" + word + """")  
  193.             Else  
  194.                 Exit Sub  
  195.             End If  
  196.         End If  
  197.     End Sub  
  198.   
  199.     Private Sub 时间日期DToolStripMenuItem_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles 时间日期DToolStripMenuItem.Click  
  200.         If ML = False Then  
  201.             RichTextBox1.Text += Date.Now  
  202.         Else  
  203.             RichTextBox1.Text += Chr(13) & Chr(10) & Date.Now  
  204.         End If  
  205.     End Sub  
  206.   
  207. End Class  

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

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

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

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

原创粉丝点击