相信大家学 VB 如果连记事本这东西都不知道话就很郁闷了,CG 今天接到 Kivi 的任务,做一个能看懂代码的记事本程序作为 VB 作业上交,据说还要上台讲,这老师真够难为人的,反正 CG 是有段时间没有见到了,源代码附上,如果大家有需要的话拿走,毕竟像初学者还是需要的。
简要说明: 记事本程序主要是要求在 VB 中使用 Common Dialog Control 控件的打开文件,打开字体,保存文件对话框的功能,实现文本的创建、修改、编辑、保存的功能,也是大家平时也使用的比较多的文本编辑器。
源代码地址: http://www.lidaren.com/code/VBnotepad.zip
以下是部分参考代码:
Dim Changed As Boolean ' 是否被修改
Dim IsSave As Boolean ' 是否已经保存
Dim FileName As String ' 文件名称
Dim TxtBefore As String ' 修改前文本,用于撤销操作
' 窗体加载
Private Sub Form_Load()
Clipboard.Clear
End Sub
' 窗体关闭
Private Sub Form_Unload(Cancel As Integer)
' 与退出按钮的事件处理方法相同
If Changed = True Then
result = MsgBox ("您正要关闭编辑窗口,是否保存您的修改?", vbYesNoCancel, "确定") ' 提示是否保存
If result = vbYes Then
MenuStripSave_Click ' 直接调用保存事件的方法
ElseIf result = vbNo Then
Unload Me ' 卸载窗体
End If
Else
Unload Me
End If
End Sub
' 关于
Private Sub MenuStripAbout_Click()
MsgBox "由 CG 提供支持", vbOKOnly, "关于"
End Sub
' 选择全部文本
Private Sub MenuStripSelectAll_Click()
RTBox.SelStart = 0 ' 从文本开始处开始
RTBox.SelLength = Len (RTBox.Text) ' 选择长度 = 文本最大长度
End Sub
' 撤销
Private Sub MenuStripUndo_Click()
RTBox.Text = TxtBefore ' 恢复文本
End Sub
' 文本框文本变化
Private Sub RTBox_Change()
Changed = True ' 发生 Change 事件
If FileName = "" Then ' 如果文件名是空 未命名
FileName = "未命名"
Me.Caption = FileName ' 修改标题
End If
If InStr(Me.Caption, "*") = 0 Then
Me.Caption = FileName + "*" ' 标记星号
End If
End Sub
' 窗体调整大小
Private Sub Form_Resize()
RTBox.Width = Form1.Width - 40 ' 修改文本框的大小
RTBox.Height = Form1.Height - 40
End Sub
' 复制
Private Sub MenuStripCopy_Click()
Clipboard.Clear ' 清楚剪切板
Clipboard.SetText RTBox.SelText
End Sub
' 剪切
Private Sub MenuStripCut_Click()
Clipboard.Clear
Clipboard.SetText RTBox.SelText
RTBox.SelText = "" ' 复制后删除所选文本
End Sub
' 删除
Private Sub MenuStripDelete_Click()
RTBox.SelText = "" ' 直接删除文本
End Sub
' 退出
Private Sub MenuStripExit_Click()
If Changed = True Then
result = MsgBox ("您正要关闭编辑窗口,是否保存您的修改?", vbYesNoCancel, "确定") ' 确认
If result = vbYes Then
MenuStripSave_Click ' 调用保存事件的代码
ElseIf result = vbNo Then
Unload Me
End If
Else
Unload Me ' 如果没有修改那就直接卸载窗体
End If
End Sub
' 字体对话框
Private Sub MenuStripFont_Click()
ComDiag.Flags = 1
ComDiag.ShowFont ' 显示字体对话框
RTBox.Font.Bold = ComDiag.FontBold ' 字体属性赋值
RTBox.Font.Italic = ComDiag.FontItalic
RTBox.Font.Name = ComDiag.FontName
RTBox.Font.Size = ComDiag.FontSize
RTBox.Font.Strikethrough = ComDiag.FontStrikethru
RTBox.Font.Underline = ComDiag.FontUnderline
End Sub
' 新建
Private Sub MenuStripNew_Click()
Dim result As Integer ' 定义一个 int 用于获取对话框结果
If Changed = True Then
result = MsgBox ("您正要新建一个编辑窗口,是否保存您的修改?", vbYesNoCancel, "确定")
If result = vbYes Then
MenuStripSave_Click
End If
Else
FileName = "未命名"
Me.Caption = FileName
RTBox.Text = "" ' 清空文本框
End If
End Sub
' 打开
Private Sub MenuStripOpen_Click()
ComDiag.Filter = "*.*"
ComDiag.ShowOpen
If ComDiag.FileName <> "" Then ' 如果选择了文件
FileName = ComDiag.FileName
RTBox.Text = ""
RTBox.LoadFile FileName
Me.Caption = FileName ' 修改标题
End If
End Sub
' 粘贴
Private Sub MenuStripPaste_Click()
RTBox.SelText = Clipboard.GetText ' 粘贴剪贴板的内容
End Sub
' 保存
Private Sub MenuStripSave_Click()
Dim result As Integer
If IsSave = True Then
RTBox.SaveFile FileName, rtfText ' 如果已经保存过,直接保存结果
If InStr (Me.Caption, "*") <> 0 Then ' 标题中有 * ?
Me.Caption = Replace (Me.Caption, "*", "") ' 替换
End If
Else
ComDiag.Filter = "*.*"
ComDiag.DialogTitle = "保存" + FileName
ComDiag.ShowSave ' 保存对话框
If FileName <> "" Then
FileName = ComDiag.FileName
RTBox.SaveFile FileName, rtfText ' 保存结果 TEXT 格式
IsSave = True ' 已经保存
Me.Caption = FileName
If InStr(Me.Caption, "*") <> 0 Then
Me.Caption = Replace (Me.Caption, "*", "") ' 清除星号
End If
End If
End If
End Sub
' 另存为
Private Sub MenuStripSaveAs_Click()
ComDiag.Filter = "*.*"
ComDiag.DialogTitle = "另存为..."
ComDiag.ShowSave
If FileName <> "" Then
FileName = ComDiag.FileName
RTBox.SaveFile FileName, rtfText
IsSave = True
Me.Caption = FileName
If InStr(Me.Caption, "*") <> 0 Then
Me.Caption = Replace(Me.Caption, "*", "")
End If
End If
End Sub
Kivi 加油!!