Invalidate für Hauptfenster aus Childfenster
-
Mein Hauptfenster heißt Form1, das Childfenster Form2. Wie kann ich aus Form2 den gesamten Bildschirminhalt von Form1 für ungültig erklären um die in Form2 geänderten Integerwerte, die in Form1 dargestellt werden, gleich (verändert)darzustellen?
Invalidate funktioniert nicht...?Danke!
Bra
-
Hallo,
woher soll .NET wissen welche Wert voneinander abhängen und aus einer Datenquelle kommen? -- Gar nicht solange du kein DataBinding verwendest.
Lösung: Schreibe dir eine Funktion "AktualisiereDieWerte" und rufe diese auf. Um das neuzeichnen des Fensters musst du dich nicht kümmern.
Hilft das?
-
vielleicht habe ich mich etwas umständlich ausgedrückt:
1. ich habe eine statische Klasse (def) mit all meinen Integervariablen.
2. im Hauptform (form1) stelle ich diese dar (alles labels).
3. im Childform (form2) ändere ich die Werte der statischen Klasse über buttons (plus/minus)
4. ich möchte, dass nach jedem Buttonsklick (Werteänderung) in der Childform der neue Wert sofort im Hauptform dargestellt wird. Hierfür muss ich aus dem Childform die Hauptform für ungültig erklären oder alternativ dem Hauptform ein OnPaint-Ereignis senden. Dieses bekomme ich merkwürdigerweise nicht hin...
vielleicht weiß ja jemand Rat... ist wahrscheinlich ganz einfach, ich komme nur einfach nicht drauf...
Vielen Dank,
Bra
-
Nein, Headhunter hat das schon vollkommen richtig erklärt.
Deine Labels sind nicht direkt mit den Variablen verknüpft. Du hast nur mal der Text-Eigenschaft deiner Labels den Wert deiner Variablen hinzugefügt. Diesen werden sie bis in alle Ewigkeit behalten, falls nicht Du die Text-Eigenschaft neu setzt.
Und das geht eben nur über eine eigens geschriebene Funktion, in der du allen deinen Labels die veränderten Variablen zuweist.Allternativ könntest du dir das Observer-Pattern anschauen. Das Ziel dieses Pattern ist es eben diese Werteänderung ein wenig zu vereinfachen und vorallem den Datenblock recht gut von deiner Anzeige abzuschirmen.
http://en.wikipedia.org/wiki/Observer_pattern (kenne die Qualität dieses Artikels nicht, ansonsten google)Ich sehe grad, dass deine Datenklasse eine statische Klasse is. Das ist für das Observer-Pattern etwas ungünstig. Zumindest würde es zu unschönem Code führen. Vielleicht musst du die Datenklasse ja nicht statisch machen. Ansonsten wäre das Singleton-Pattern die bessere Alternative.