Save & Restore
-
Hallo,
Ich habe in meinem .NET-Programm eine Form-Klasse. Diese soll sich bei bestimmten Events selber abspeichern und dann, wenn ein anderes Event auftritt auch wiederherstellen.
Wenn z.B. das Form auf "Visible" gesetzt wird, dann soll die aktuelle Status der Klasse komplett in eine Variable der Klasse abgespeichert werden. Dann verändert der User z.B. bestimmte Controls auf dem Form, drückt dann aber Cancel! Jetzt möchte ich, dass dieser vorher gesicherte Status wiederhergestellt wird. Wie geht das am besten?
-
Ich habe in meinem .NET-Programm eine Form-Klasse
.NET ist keine Sprache, es enthält nur mehrere. Programmierst du in C#?
Aber Prinzipiell musst du einfach das Form-Objekt kopieren/zurückkopieren.
-
Ist doch ziemlich unerheblich, oder?
Ich programmiere mit managed C++, aber C# ist auch kein Problem.
-
Schaue dir doch mal in der Hilfe das Interface IEditableObject an. Da wird gezeigt wie man mit BeginEdit , EndEdit und CancelEdit sowas aufbauen kann.
Es geht dabei weniger um das Interface, als darum wie man sowas aufbauen kann.Ps.: Im Grunde ist es wurscht welche Sprache man benutzt, die Methode, bzw. Properties usw. heißen im .Net Framework immer gleich.
-
Ja, so habe ich das auch vorerst gelöst.
Aber das Problem dabei ist offensichtlich:
Wenn ich das Form durch weitere Controls erweitere, dann muss ich auch die Strukturen usw. anpassen.
Gibt es keine elegantere Lösung?
-
Hab schon länger kein C++ mehr geproggt und weiß nicht ob es da auch geht, aber in C# könntest du einfach das Form kopieren/rückkopieren:
Bei der Initialisierung:
Form2 f2 = new Form2(); f2.ShowDialog();
Speichern:
Form2 f2bak = f2;
Laden:
f2 = f2bak;
so ca. müsste es gehen.
-
Das ist zwar möglich, möchte ich aber auch nicht in dieser Form machen. Der Grund: Die Form-Klasse sollte sich selber darum können und nicht die Ebene darüber. Außerdem kann ich dann die Events nicht abfangen.
-
Fink Christoph schrieb:
Hab schon länger kein C++ mehr geproggt und weiß nicht ob es da auch geht, aber in C# könntest du einfach das Form kopieren/rückkopieren:
Bei der Initialisierung:
Form2 f2 = new Form2(); f2.ShowDialog();
Speichern:
Form2 f2bak = f2;
Laden:
f2 = f2bak;
so ca. müsste es gehen.
was erzählst du da??
Da wird überhaupt keine Kopie gemacht. Da wird nur eine Referenz auf f2 gezetzt. Zeiger so zu sagen.