ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
549
549
EMPFEHLEN
-
28.05.05 20:41 #1
- Registriert seit
- Apr 2005
- Beiträge
- 50
Hi.
Ich möchte zwei Unterfenster in meinem Hauptprogramm nebeneinander öffnen und wenn ich in einem Fenster was ändere(z.B. Text), das diese Änderungen auch in dem anderem Fenser eintreten. Hat da einer Idee wie ich das am besten in c# umsetze.
Ich will so ein kleines Testprogramm schreiben wo ich z.B. eine Funktion in einem Fenster einstelle und die Änderungen in dem anderem zu sehen bekomme
-
Hi Andreas!
Das geht am besten mit eigenen Events. Deine Hauptform bietet Dir dazu eine Funktion an, die ein Event auslöst und das dazu gehörige Event. Deine Formen die benachrichtigt werden sollen, melden sich dazu einfach im z.B: Load bei diesem Event an. Wenn nun eine Form etwas ändert das in andere Formen auch geändert werden soll, dann schickst Du einfach mit der Funktion Deiner Hauptform ein Event an alle die es brauchen (die sich angemeldet haben).
Der Code für Events ist meist etwas verstreut über das Programm.. Hier die Zusammenfassung wie Du ein Event machst:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
// Dies ist sozusagen der Funktionsprototyp Deines EventHandlers ausserhalb einer class // zu deklarieren. public delegate void TextChangeHandler (object sender, EventArgs args); #region HauptFormCode // Event Declaration in Deiner Hauptform -> hier melden sich Deine Childformen an public event TextChangedEventHandler MyTextChanged; // Funktion zum Auslösen des Events: public void TextAenderung () { EventArgs args = new EventArgs(); MyTextChanged(this,args); } #endregion #region ChildForm Code //Deine childformen melden sich dann bei der Hauptform an frm_MdiParent.MyTextChanged += new TextChangeHandler (MyChildFunction); // Um auf das Event richtig zu reagieren brauchst Du noch eine Funktion die dem // Prototypen entsprechen muss private void MyChildFunction(object sender, EventArgs args) { // Hier den geänderten Text in der Form aktualisieren. } #endregion
Irgendwo in Deinem Code mußt Du dann noch die Funktion Deiner Hauptform aufrufen.
Wenn Du auch noch den Text oder andere Infos mitliefern willst, machst Du Dir am besten eine eigene EventArgsClasse, die sich von EventArgs ableitet und halt zusätzliche Attribute zur Verfügung stellt.
Das ist meiner Meinung nach einer der sauberen Wege Formen zu benachrichtigen.
ACHTUNG: Vergiss nicht beim Beenden Deiner Childformen den Eventhandler wieder abzumelden. = Selber Code wie Anmelden nur mit -= anstelle des +=.
Hoffe das hilft Dir weiter
Ciao
Max
-
02.06.05 18:48 #3
- Registriert seit
- Apr 2005
- Beiträge
- 50
Ich habe das schon mit Observer Muster realisiert(aus Java Welt), aber ich denke ich werde es auf deine Art dann iumschreiben, weil diese mir mehr gefählt und ich diese ausprobieren möchte.
Danke
Ähnliche Themen
-
Gleiche url
Von lernen.2007 im Forum HTML & XHTMLAntworten: 3Letzter Beitrag: 13.05.08, 11:43 -
mehrere gleiche Fenster unterbinden
Von floggie im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 9Letzter Beitrag: 05.04.06, 15:05 -
JS und PHP das Gleiche macht nicht das Gleiche
Von Riebensiel im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 03.06.05, 07:13 -
Gleiche Variablennamen ?
Von BeaTBoxX im Forum PHPAntworten: 1Letzter Beitrag: 07.09.04, 09:37 -
Gleiche Lautstärke
Von goela im Forum Videoschnitt, Videotechnik & -produktionAntworten: 5Letzter Beitrag: 23.12.03, 21:49





Zitieren
Login





