相信大家學 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 "Powered By 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 加油!!