Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

Eventuell mit 2 Collections bzw. einer Collection und einem Stack.

Eine Collection hält die Elemente, die angezeigt werden. Der Stack hält die Controls, die gelöscht wurden bzw. vorgemerkt sind.

Bearbeitet von lbm1305

  • Autor

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

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:

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

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.