vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: RichTextBox: Undo Funktion 
Autor: Snoopy
Datum: 26.02.08 11:25

Ja, das kann man über einen Stack machen. Hier ne Klasse dazu:
Public Structure BufferEntry
   Dim rtbText As String
   Dim CursorPos As Integer
 
   Public Sub New(ByVal Text As String, ByVal Pos As Integer)
      Me.rtbText = Text
      Me.CursorPos = Pos
   End Sub
End Structure
 
 
Public Class rtbUndo
   Private buffer As System.Collections.Stack
 
   Public Sub New(ByVal CountElements As Integer)
      buffer = New System.Collections.Stack(CountElements)
   End Sub
 
   Public ReadOnly Property Count() As Integer
      Get
         Return buffer.Count
      End Get
   End Property
 
   Public Sub Add(ByVal rtbBufferEntry As BufferEntry)
      buffer.Push(rtbBufferEntry)
   End Sub
 
   Public Function Undo() As BufferEntry
      Return buffer.Pop
   End Function
End Class
In deiner Form mit der RTB dann so:
Public Class Form1
   Private rtbBuffer As New rtbUndo(500)
   Private isBufferUpdate As Boolean = False
 
   Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e _
     As System.EventArgs) Handles RichTextBox1.TextChanged
      If Not isBufferUpdate Then
         rtbBuffer.Add(New BufferEntry(Me.RichTextBox1.Rtf, _
           Me.RichTextBox1.SelectionStart))
      End If
   End Sub
 
   Private Sub RichTextBox1_KeyDown(ByVal sender As System.Object, ByVal e As _
     System.Windows.Forms.KeyEventArgs) Handles RichTextBox1.KeyDown
      If e.Control AndAlso e.KeyCode = Keys.Z Then
         If rtbBuffer.Count > 0 Then
            isBufferUpdate = True
            Dim bEntry As BufferEntry = rtbBuffer.Undo()
            Me.RichTextBox1.Rtf = bEntry.rtbText
            Me.RichTextBox1.SelectionStart = bEntry.CursorPos
            isBufferUpdate = False
         End If
         e.Handled = True
      End If
   End Sub
End Class
Muß man noch ein bisschen Finetuning dran machen, aber so funzt es

Gruß

Gru?
---------------------------------------------------
Snoopy sagt - vb@rchiv find ich gut...
Schon gesehen? OSMMapViewer V2 Control

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
RichTextBox: Undo Funktion1.594keco22.02.08 18:15
Re: RichTextBox: Undo Funktion1.153keco25.02.08 00:35
Re: RichTextBox: Undo Funktion1.487raulic25.02.08 22:46
Re: RichTextBox: Undo Funktion1.092keco25.02.08 23:10
Re: RichTextBox: Undo Funktion1.083raulic26.02.08 10:27
Re: RichTextBox: Undo Funktion1.079keco26.02.08 11:06
Re: RichTextBox: Undo Funktion1.192Snoopy26.02.08 11:25
Re: RichTextBox: Undo Funktion1.121keco26.02.08 11:34
Re: RichTextBox: Undo Funktion1.035Snoopy26.02.08 11:44
Re: RichTextBox: Undo Funktion1.136keco26.02.08 11:55
Re: RichTextBox: Undo Funktion1.061keco27.02.08 11:39
Re: RichTextBox: Undo Funktion1.058Melkor27.02.08 12:04
Re: RichTextBox: Undo Funktion1.013keco27.02.08 12:08
Re: RichTextBox: Undo Funktion1.107Snoopy27.02.08 12:11
Re: RichTextBox: Undo Funktion1.054keco27.02.08 12:19
Re: RichTextBox: Undo Funktion1.167Snoopy27.02.08 12:50
Re: RichTextBox: Undo Funktion1.164keco27.02.08 12:56
Re: RichTextBox: Undo Funktion1.069Melkor27.02.08 12:27
Re: RichTextBox: Undo Funktion1.083keco27.02.08 12:34
Re: RichTextBox: Undo Funktion1.059Melkor27.02.08 12:45
Re: RichTextBox: Undo Funktion1.066keco27.02.08 12:52

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel