Zum Inhalt springen

Controls entfernen -> Rückgängig machen


HJST1979

Empfohlene Beiträge

Hallo

ich Programmiere derzeit einen Designer wie ich an anderer Stelle schon geschrieben habe.

Folgendes ist die Ausgangslage:

Bei dem Designer hat der Endanwender die Möglichkeit sowohl Controls auf das Form zu ziehen als auch Controls wieder zu entfernen. Weiterhin besteht die Möglichkeit dass der Endanwender die Größe und Position verändert.

Das möchte ich realisieren:

Ich möchte, dass der Endanwender seine vorherigen Aktionen rückgängig machen kann.

Beispiel 1:

Der Endanwender zieht 2 Buttons auf das Form. Nun drückt er "rückgängig" und die Optik sollte wieder so sein wie vorher.

Beispiel 2:

Der Endanwender löscht ausversehen einen Button. Nun drückt er wieder "rückgängig" und die Optik sollte wieder so sein wie vorher.

Hat jemand vielleicht eine Idee wie sich das verwirklichen lässt ?

Für Hilfe bin ich jetzt schon dankbar

Gruß Hans-Jörg

P.S. VB.NET Code wäre super aber macht auch nichts wenn C# Code gepostet wird

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo

habs jetzt mit ArrayList gelöst. Das heißt ich merke mir die letzte Aktion (Beispiel: Controll, "Add") und falls ich das Rückgängig machen will, blende ich einfach das Control aus. usw. usw.

Gruß Hans-Jörg

Solang es nur ums Erstellen und Löschen ist das sicher ok.

Interessant wirds dann erst, wenn du weitere Zusatzinformationen brauchst; bspw. Control wird verschoben:

  • Aktionsart (Enum/Aktion)
  • Control
  • Zusatzinfo (Vector)

Daraus ergibt sich für mich sowas:


IList<IDictionary<Action<Control, object>, IControlActionInfoWrapper>> DoneList;


public interface IControlActionInfoWrapper

{

    Control Control { get; }

    object Info { get; }

}


public class ControlActionInfoWrapper<T> : IControlActionInfoWrapper

{

    #region IControlActionInfoWrapper Members


    public Control Control { get; set; }


    object IControlActionInfoWrapper.Info { get { return Info; } }


    #endregion


    public T Info { get; set; }

}

Nur mal so als Idee in den Raum geworfen. :floet:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Command pattern - Wikipedia, the free encyclopedia

Multi-level undo

If all user actions in a program are implemented as command objects, the program can keep a stack of the most recently executed commands. When the user wants to undo a command, the program simply pops the most recent command object and executes its undo() method.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Etwas aufwaendiger, aber vielseitig waere die Moeglichjkeit, die Controls dynamisch aus einer DB auszulesen. Dazu muesstest du die relevanten Daten der Controls, (breite,hoehe,x-pos,y-pos, name, parent usw) als felder einer tabelle anlegen.

Der Vorteil davon ist, dass du beim loeschen eines Controls, nicht die row aus der Tabelle werfen musst, sondern du das ueber ein "aktiv-flag" machen kannst. Dadurch kannst du dann beliebig Zustaende wieder herstellen (no nen timestamp wanns geloescht wurde und von wem mit inn die tabelle schreiben) wenn jemand mist gebaut hat.

Grus

Sven

Link zu diesem Kommentar
Auf anderen Seiten teilen

Etwas aufwaendiger, aber vielseitig waere die Moeglichjkeit, die Controls dynamisch aus einer DB auszulesen. Dazu muesstest du die relevanten Daten der Controls, (breite,hoehe,x-pos,y-pos, name, parent usw) als felder einer tabelle anlegen.

Grus

Sven

Moin,

Und schon muss er eine Datenbank erstellen ?!

So etwas würde ich vielleicht in Erwägung ziehen, wenn der Benutzer sein Kunstwerk abspeichern möchte. Aber selbst da würde ich eine XML-Datei vorziehen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...