Home > other >  Create a undo/redo textboxes algorithm in VB.Net
Create a undo/redo textboxes algorithm in VB.Net

Time:11-14

I would love to create a type algorithm Undo/Redo in VB.Net, first at least i want to make the undo.

if we have the example Textbox1.Text = a,b,c

then change to = a,b,c,e

then change to = a,b,c,f

when I click on undo I want to display (that is, the value before it. before after a,b, c, f, was a, b, c,e

a,b,c,e

and when I click once again I want to display

a,b,c

that is, an undo / redo algorithm of added values

I first created a global list.

Public Module Globals
    Public Undo As New List(Of String)
End Module

if Textboxes value is not exists in the list, then I will add it.

Private Sub Button1(sender As Object, e As EventArgs) Handles Button1.Click
    If Undo IsNot TextBox1.Text Then
        Undo.Add(TextBox1.Text)
    End If
End Sub

hey well here's the tricky part

Private Sub Undo_Click(sender As Object, e As EventArgs) Handles Undo.Click
    Dim i as integer = Undo.Count
    While TextBox1.Text IsNot Undo(i)
        TextBox1.Text = Undo(i)
    End While
 End Sub

   For i As Integer = Undo.Count To 0 Step -1
     TextBox1.Text = Undo(i)
   Next

unfortunately no such loop works in this case.

CodePudding user response:

Try this:

Private Undos As List(Of String) = New List(Of String)()
Private AddUndo As Boolean = True

Private Sub textBox1_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
    If AddUndo = True Then
        Undos.Add(textBox1.Text)
    End If
End Sub

Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
    If Undos.Count <> 0 Then
        AddUndo = False

        If Undos.Count > 1 Then
            textBox1.Text = Undos(Undos.Count - 2)
            Undos.RemoveAt(Undos.Count - 1)
        Else
            textBox1.Text = ""
            Undos.RemoveAt(0)
        End If

        AddUndo = True
    End If
End Sub
  • Related