如何用vb制作记事本里的《撤消》功能?????

解决方案 »

  1.   

    第一种方法'窗体中放一个Text和一个CommandPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Const WM_UNDO = &H304
    Private Sub Command1_Click()
        SendMessage Text1.hwnd, WM_UNDO, 0, 0
    End Sub
      

  2.   

    第二种方法:
    Option ExplicitDim cUndoData As New Collection
    Dim cRedoData As New Collection
    Public bCauseValidate As Boolean
    Private Sub SaveUndoData()
        cUndoData.Add Text1.Text
        Dim i
        If cRedoData.Count > 0 Then
            For i = 0 To cRedoData.Count - 1
                cRedoData.Remove (i)
            Next
        End If
    End Sub
    Private Sub Undo()
       cRedoData.Add cUndoData.Item(cUndoData.Count - 1)
       bCauseValidate = False
       Text1.Text = cUndoData.Item(cUndoData.Count - 1)
       bCauseValidate = True
       cUndoData.Remove (cUndoData.Count - 1)
    End SubPrivate Sub Command1_Click()
    If CanUndo Then Undo
    End SubPrivate Sub Form_Load()
        bCauseValidate = True
        SaveUndoData
    End SubPrivate Sub Text1_Change()
    If bCauseValidate Then
        SaveUndoData
    End If
    End Sub
    Private Function CanUndo() As Boolean
        CanUndo = IIf(cUndoData.Count > 1, True, False)
    End Function
      

  3.   

    记事本里好像只能撤销一次。那么最简单的方法:Sendkeys "^Z"