龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

如何在RichTextBox中实现Undo功能(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
Private trapUndo As Boolean Private UndoStack As New Collection 可撤销的集合 Private RedoStack As New Collection 可恢复的集合 Private Sub Command2_Click() Redo End Sub Private Sub Command1

Private trapUndo As Boolean
Private UndoStack As New Collection '可撤销的集合
Private RedoStack As New Collection '可恢复的集合

Private Sub Command2_Click()
Redo
End Sub

Private Sub Command1_Click()
Undo
End Sub

Private Sub Form_Load()
RichTextBox1.Text = ""
Command1.Caption = "撤销"
Command2.Caption = "恢复"
trapUndo = True
RichTextBox1_Change
RichTextBox1_SelChange
Show
DoEvents
End Sub

Private Sub mnuCopy_Click()
Clipboard.SetText RichTextBox1.SelText, 1 '拷贝
End Sub

Private Sub mnuCut_Click()
Clipboard.SetText RichTextBox1.SelText, 1 '剪切
RichTextBox1.SelText = ""
End Sub

Private Sub mnuDelete_Click()
RichTextBox1.SelText = "" '删除
End Sub

Private Sub mnuPaste_Click()
RichTextBox1.SelText = "" '这一步对Undo功能至关重要
RichTextBox1.SelText = Clipboard.GetText(1) '粘贴
End Sub

Private Sub mnuRedo_Click()
Command2_Click
End Sub

Private Sub mnuSelectAll_Click()
'全选
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = Len(RichTextBox1.Text)
End Sub

Private Sub mnuUndo_Click()
Command1_Click
End Sub

Private Sub RichTextBox1_Change()
If Not trapUndo Then Exit Sub '因为because trapping is disabled

精彩图集

赞助商链接