Zugriff auf Methoden anderer Klassen?

Skiron

Grünschnabel
Guten Tag

Ich arbeite momentan an einem Programm für ein WinCE-Gerät. Dabei wird eine MainForm generiert, welche über den gesamten Programmverlauf geöffnet bleibt und eine Menüleiste beinhaltet. Alle zusätzlichen Formen werden in dieser MainForm geöffnet. Um Überlagerungen bzw. gleichzeitiges Öffnen zu vermeiden, werden mit dem Click-Event die Buttons der MainForm deaktiviert und sollen es auch bleiben, bis die derzeit aktive Form wieder geschlossen wird. Um jedoch beim Schliessen die Buttons wieder zu aktivieren, muss ich aus der entsprechenden aktiven Form auf die Methode zum Aktivieren in der MainForm zugreifen. Nur leider bekomme ich das nicht hin.
Die Methode ist als public deklariert und steht in der MainForm. Wenn ich nun einen Aufruf starte, bekomme ich die Fehlermeldung, dass diese Methode nicht im Namespace liegt. Ich habe auch schon eine extra Klasse für die Deaktivierung und Aktivierung geschrieben - damit komme ich allerdings nicht in die MainForm um die Buttons anzusprechen.

Hat eventuell jemand einen Vorschlag, wie ich doch noch das gewünschte Ergebnis hinbekomme?

MfG Dennis
 
Hi.

Wie rufst du den die Methode auf? Hast du in deinem 2ten Form einen Verweis auf die Instanz des Hauptforms, ohne dem wirds nicht gehen.

Du könntest jedoch in deinem Hauptform, für alle 'Sub-Forms' einen Closing-Eventhandler anlegen, und in diesem die Buttons im Hauptform wieder aktivieren.

So bleibt die ganze Programmlogic zum aktivieren/deaktivieren der Buttons in der Hauptform und die Subforms müssen sich nicht darum kümmern.

Code:
...
BlaForm b = new BlaForm();
b.Closing += new CancelEventHandler(this.SubFormClosing);

BlubbForm c = new BlubbForm();
c.Closing += new CancelEventHandler(this.SubFormClosing);
...

private void SubFormClosing(object sender, CancelEventArgs cea)
{
	this.ActivateButtons();
}

MfG,
Alex
 
moin

Wie wäre es wenn du die zweite Form mit NameDerForm.ShowDialog(); öffnest.
Dabei wird das ganze MainForm-Fenster gesperrt (d.h. du kannst mit dem Fenster nichts mehr machen), solange bis du die zweite Form wieder schliesst.
Danach gehts gleich nach ShowDialog() wieder weiter.


mfg broetchen
 
Original geschrieben von broetchen
moin

Wie wäre es wenn du die zweite Form mit NameDerForm.ShowDialog(); öffnest.
Dabei wird das ganze MainForm-Fenster gesperrt (d.h. du kannst mit dem Fenster nichts mehr machen), solange bis du die zweite Form wieder schliesst.
Danach gehts gleich nach ShowDialog() wieder weiter.


mfg broetchen

Ups, stimmt. Ist auch noch eine Möglichkeit. Eine sehr einfache sogar. =)
 
hehe

Die übersehen irgendwie sehr viele Leute :)

ich könnt ohne diese Funktion gar nicht leben *g*


mfg broetchen
 
Original geschrieben von broetchen
hehe

Die übersehen irgendwie sehr viele Leute :)

ich könnt ohne diese Funktion gar nicht leben *g*


mfg broetchen

Ich hab die letzten Tage nur solche Dialoge für eine Anwendung geschrieben, und hab doch öfters diese Methode verwendet. :rolleyes:
 
Vielen Dank euch beiden :)

Mit der Lösung von Alex hat´s wunderbar funktioniert. An den CancelEventHandler hatte ich noch garnicht gedacht :eek: - werd´s mir aber merken .

Die Idee von broetchen ist auch nicht schlecht, sperrt allerdings, wie schon gesagt, die ganze MainForm. Da jedoch nicht alle Buttons gesperrt werden sollen kann ich die ShowDialog()-Methode nicht verwenden.

Nochmals Danke

MfG Dennis
 

Neue Beiträge

Zurück