UndoRedo Demo
Erst spät habe ich eine Vorstellung davon bekommen, wie man Rückgängig und Wiederherstellen für Windows Forms realisieren könnte. Eigentlich ist es gar nicht schwierig. Man braucht eine Liste, die eine vorher festgelegte Anzahl von "Aktionen" speichern kann. Eine solche Aktion hat einen Namen und enthält alle notwendigen Informationen, um einen Befehl ausführen oder rückgängig machen zu können. Dazu gehören Referenzen auf selektierte Objekte, wenn ein Objekt bei einer Aktion geändert wird, Informationen zum Zustand vor und nach der Aktion... Alle wesentlichen Änderungen in der Windows Form werden dieser Liste als Aktion hinzugefügt. Beim Rückgängig machen wandert man die Liste einfach zurück und stellt den Zustand vor dieser Aktion wieder her. Beim Wiederherstellen läuft's umgekehrt.
Um das mal zu demonstrieren, habe ich einfach das Beispiel "Personensammlung" weiter oben um ein paar Features erweitert. Zusätzlich - da es für eigene Anwendungen ganz nützlich ist, arbeitet diese Anwendung im MultiSDI-Modus. Also einfach mal starten, ein paar Personen hinzufügen und bearbeiten, dann Befehle nach Belieben rückgängig machen oder wiederherstellen. Als Basis für die hier verwendete Aktionsliste diente mir die aus dem sehr umfangreichen C#-Beispiel "XML Notepad 2006" bei MSDN.
Zum Testen der Multi-SDI-Eigenschaften mit "Datei neu" mehrere Fenster erstellen und dann mit dem Fenster-Menü experimentieren.