Laden...

Close-Event bei MdiChilds

Erstellt von GambaJo vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.682 Views
GambaJo Themenstarter:in
105 Beiträge seit 2006
vor 17 Jahren
Close-Event bei MdiChilds

Folgendes Problem:

Habe einen MdiContainer, auf dem ein Pannel mit Buttons drauf ist. Bei Klick auf die Buttons wird ein MdiChild-Form aufgemacht (je nach dem welchers Button geklickt wurde, öffnet sich ein anderes Form). Diese Forms sind abgeleitet von einem übergeordneten Form (BaseFrame).
Sieht also so aus MdiContainer-->BaseFrame-->Frame1

Wenn sich ein Form öffnet, wird eine Methode im BaseFrame gestartet, die das Button deaktiviert, auf das geklickt wurde (so daß nicht mehrere Forms gleicher Art offen sind). Das funktioniert auch so weit ganz gut.
Nun brauche ich das Ganze auch andersrum, d.h., wenn ich das Form schließe soll wieder eine Methode im Baseframe gestartet werden, die den Button wieder aktiviert.
ich dachte, das wäre das Event "Leave", ist es aber nicht ganz, denn wenn ich zwei verschiedene Forms offen habe, und zwischen ihnen rumklicke (Focus-Wechsel), dann wird die Methode im BaseFrame trotzdem gestartet.

Gibts nicht ein einfaches CloseForm-Event?

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo GambaJo,

Gibts nicht ein einfaches CloseForm-Event?

hast du mal in die SDK-/MSDN-Doku geguckt? Das Event heißt Form.Closed bzw. Form.FormClosed.

herbivore

GambaJo Themenstarter:in
105 Beiträge seit 2006
vor 17 Jahren

Ich stehe auf Kriegsfuß mit diesem MSDN-Gedöns. Ich find nie das, was ich brauche.

Dieses Event ist nicht im Eventmanager vorhanden (also wenn ich in die Ansicht vom BaseFrame gehe und da in die Events).
Wenn ich die Methode einfach so in den Editor eingebe, nützt das ja herzlich wenig. Wo muß ich das denn eintragen?

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo

Ich stehe auf Kriegsfuß mit diesem MSDN-Gedöns. Ich find nie das, was ich brauche.

das darf aber nicht dazu führen, dass du uns dazu "missbrauchst," dir die Doku "vorzulesen". Freunde dich besser mit der Doku an. Ohne sie wirst du nicht weit kommen.

Wo muß ich das denn eintragen?

Mit VS kenne ich mich nicht aus. Ich benutze das nicht. Und was du im Code schreiben musst, findest du in jedem C#-Buch (z.B. Visual C# 2005)
und auch unter im guide to C#. Solche Grundlagen zu vermitteln, kann ein Forum nicht leisten.

herbivore

GambaJo Themenstarter:in
105 Beiträge seit 2006
vor 17 Jahren

Ich brauche mit Sicherheit keine Grundlagen, wie man mit Events umgeht. Für gewöhnlich arbeite ich mit einer anderen Sprache, und arbeite mich in C# ein. Eine Hilfe, wie MSDN bin ich nicht gewöhnt.

Das, was ich meine, sieht man hier unten. Kein Close- kein Closing- kein OnClose-Event. Was nützt es mir, wenn ich so ein Event in den Editor eingebe, wenn ich das nirgendwo eintragen kann, so daß die Funktion auch beim Schließen des Forms aufgerufen.

Das hat nichts mit Vorlesen von einer Hilfe zu tun, sondern ist ein konkretes Problem.

563 Beiträge seit 2004
vor 17 Jahren

klick da halt mal doppelt rein.

oder schreibe <objektname>.<eventname> [tab 2 mal drücken] im code

das steht übrigens in jedem .NET 2.0 Buch

.unreal

GambaJo Themenstarter:in
105 Beiträge seit 2006
vor 17 Jahren

Doppelklick wo rein? Das Event, was ich brauche ist ja nicht da drin.

Wie auch immer, ich hab jetzt einen Tipp bekommen, aber noch nicht ausprobiert (werde ich heute Abend mal machen).

In die Initialisierungsmethode des BaseFrames folgendes eintragen:

public virtual void SubInit()
{
this.Closed += new System.EventHandler(this.BaseFrame_Closed);
}

Und dann eine Methode reinsetzen, die so heißt:

private void BaseFrame_Closed(object sender, System.EventArgs e)

Ich wunder mich nur, dass es so umständlich ist. Da sind viele Ereignisse eingetragen, die man nicht wirklich oft braucht, aber so ein Closing-Event ist doch schon elementar und ist nicht eingetragen.

GambaJo Themenstarter:in
105 Beiträge seit 2006
vor 17 Jahren

Ich habs ausprobiert, und es klappt.

563 Beiträge seit 2004
vor 17 Jahren

Original von GambaJo
Doppelklick wo rein?

in das leere Feld neben dem Event

Das Event, was ich brauche ist ja nicht da drin. Dann gibt es diesen Event auf dem selektierten Member nicht

.unreal

GambaJo Themenstarter:in
105 Beiträge seit 2006
vor 17 Jahren

Doppelklick auf etwas, das nicht da ist 🤔
Das Event gibt es, man muß es nur selbst "basteln".
Ist ja auch wurscht, funktioniert jetzt auf jeden Fall.