Entwickler-Ecke

WinForms - Gesamte Form zurücksetzen / initialisieren


kevinkeegan - Di 19.02.08 14:39
Titel: Gesamte Form zurücksetzen / initialisieren
Hallo,

gibt es eine Methode, mit der ich die gesamte Form leere, d.h. auf Defaultwerte zurücksetze oder muß ich das "zu Fuß machen"? Bei Oracle Forms heißt die Prozedur "clear_form". Ausgeführt werden soll diese Methode, wenn der Nutzer Datei - Neu ... im Menü drückt (das nur nebenbei).

MfG
Kevin


JüTho - Di 19.02.08 16:50

Das geht leider nur manuell. Es steht zwar alles, was dazu benötigt wird, in der Designer.cs in InitializeComponents(); aber dort werden die Controls auch erzeugt und in die jeweilige Controls-Collection eingetragen, also kann man nicht einfach diese Methode aufrufen. Ebensowenig gibt es irgendeine andere Stelle, in der die Init-Werte stehen und bei Bedarf geholt werden können.

Verfahrensvorschläge:
1. Im Konstruktor werden alle Werte geholt und zwischengespeichert, z.B. durch Serialisierung.
2. Auf den Designer wird vollständig verzichtet; stattdessen werden die entsprechenden Maßnahmen in eigene Init-Methoden ausgelagert, und dabei werden Controls-Konstruktoren und Initialisierungen getrennt.

Keines dieser Verfahren habe ich selbst durchgeführt, aber so müsste es gehen.

Jürgen


kevinkeegan - Fr 25.04.08 09:33

Ach übrigens Danke Jürgen für die Antwort, ist ja schon ein wenig her ;)
Ich möchte die Aussagen aber nochmal aufgreifen, weil noch aktuell.

Bei Serialisierung bin ich noch nicht "vorbei gekommen", keine Ahnung wofür ich da was machen soll/kann.

Zu 2.: Für diese Vorgehensweise muß ich mich aber bevor ich das Projekt beginne entscheiden, richtig? Ist damit gemeint, dass ich sämtliche Controls programmtechnisch/dynamisch erzeuge, also nicht durch Drag&Drop aus der Werkzeugleiste? Das kann ich mir bei der Fülle an Controls (momentan mind. 100 und es werden mehr) nur schlecht vorstellen, wie funktioniert das in der Praxis? Wie behält man da den Überlick?

MfG
Kevin


bakachan - Fr 25.04.08 09:38

Hallo,
mein Vorschlag wäre:


C#-Quelltext
1:
2:
this.Controls.Clear();
InitializeComponent();


Kurze Erklärung...
Controls.Clear() löscht alle Controls auf dem Form.
InitializeComponent() ist die Funktion die du auch beim erstellen der Form haben müsstest (vorrausgesetzt du benutzt den normalen Designer), die deine Controls erstellt und initialisiert.


kevinkeegan - Fr 25.04.08 10:18

Danke für die Antwort, werde ich ausprobieren. Kannst Du vielleicht auch etwas dazu sagen: Controls "händisch" über Toolbox erstellen und programmtechnisch ...?


JüTho - Fr 25.04.08 13:11

"händisch" geht es genauso, wie es der Designer vormacht. Alles, was in der Designer.cs steht, kann man auch selbst erstellen. Ich würde allerdings ein paar Standardmethoden CreateButton, CreateTextBox usw. vorbereiten und diese mit passenden Argumenten versehen und aufrufen.

"Fülle an Controls": Ein Formular sollte natürlich nicht überladen werden, auch wenn der Designer mit Toolbox das erleichtert. Aber es gibt wirklich sehr aktive Programmierer, die auf den Designer völlig verzichten und nur mit Notepad++ und csc.exe entwickeln.

Jürgen