2 Stimmen

Serialisierung von MDI-Winforms für Persistenz

Im Grunde ist mein Projekt eine MDI-Winform-Anwendung, bei der der Benutzer die Oberfläche durch Hinzufügen verschiedener Steuerelemente und Ändern des Layouts anpassen kann. Ich möchte in der Lage sein, den Zustand der Anwendung für jeden Benutzer zu speichern.

Ich habe ziemlich viel gesucht und diese gefunden:

Wie man automatisch speichern und automatisch laden alle Eigenschaften in Winforms C#?

WinForm oder Steuerelemente in Datei speichern

Grundsätzlich von dem, was ich verstehe, ist der beste Ansatz, um die Daten in XML zu serialisieren, aber Winform-Steuerelemente sind nicht serialisierbar, so dass ich Surrogatklassen verwenden würde:

http://www.codeproject.com/KB/dotnet/Surrogate_Serialization.aspx

Muss ich nun für jedes meiner Steuerelemente eine Surrogatklasse schreiben? Ich müsste eine Art rekursiven Algorithmus schreiben, um alle meine Steuerelemente zu speichern. Wie kann ich das am besten bewerkstelligen? Wie würde ich dann alle Fenster wiederherstellen, sollte ich dafür das Memento Design Pattern verwenden? Wenn ich später mehrere Benutzer implementieren möchte, sollte ich dann Nhibernate verwenden, um alle Objektdaten in einer Datenbank zu speichern? Ich versuche immer noch, das Problem zu verstehen, und wenn jemand Erfahrungen oder Ratschläge hat, wäre ich sehr dankbar.

0 Stimmen

Das Formular und die Steuerelemente funktionieren, ich versuche nur, es beständig zu machen.

0 Stimmen

Es gibt auch die Option "Formulareinstellungen", aber sie hat sich für die von mir verwendeten Steuerelemente als nicht robust genug erwiesen.

1voto

Peter Lillevold Punkte 32995

Sie wollen die eigentlichen Kontrollinstanzen nicht serialisieren. Sie sollten zusammen mit dem Form die sie bewohnen. Schauen Sie sich lieber an, was Sie dem Benutzer zur Anpassung überlassen. Layout und Position? Sehr gut, speichern Sie die Koordinaten für Oben und Links für jedes Steuerelement zusammen mit einem Steuerelementbezeichner. Darf der Benutzer neue Steuerelemente hinzufügen? Speichern Sie deren Kennungen zusammen mit einer Typbezeichnung, damit Sie beim erneuten Laden die Steuerelemente an ihrer vorherigen Position wiederherstellen können.

Unabhängig davon, ob Sie XML oder ein anderes Format verwenden, gibt es keinen besten Ansatz oder eine beste Praxis. Wählen Sie, was für Ihr Projekt sinnvoll ist. XML ist ein einfach zu handhabendes Format mit großartiger Unterstützung durch das .Net Framework.

0 Stimmen

Das habe ich mir auch schon gedacht, ich versuche nur herauszufinden, wie ich das am besten umsetzen kann. Muss ich ein Objekt erstellen, das diese Eigenschaften speichern würde, die ich dann serialisieren würde? Wie kann ich am besten das Formular durchlaufen, um alle Steuerelemente und ihre Eigenschaften zu erfassen?

0 Stimmen

Iterieren Sie über Form.Controls und schreiben Sie ihre Eigenschaften bei der Iteration auf. Die Wiederherstellung des Zustands ist ähnlich, erfordert aber etwas mehr Arbeit, wenn Sie das Hinzufügen neuer Steuerelemente unterstützen.

0voto

Merry Punkte 1

Ich weiß, es gibt eine Software, LinsUI Layout Manager, die Ihre Probleme sehr gut behandeln. Sie haben kostenlose Version für interessierte Entwickler. Sie können die Website besuchen . Prost

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X