Laden...

MDI Menüeintrag de-/aktivieren

Erstellt von Mighty Panther vor 15 Jahren Letzter Beitrag vor 15 Jahren 870 Views
Mighty Panther Themenstarter:in
22 Beiträge seit 2008
vor 15 Jahren
MDI Menüeintrag de-/aktivieren

Hallo!

Zuerst mal will ich sagen, dass ich ein Newbie im Programmieren mit C# bin.
Aber da ich es lernen und verstehen will, muss ich fragen um Antworten zu finden.
Denn auch der erste Schritt gehört zum Weg.

Also meine Frage ist wahrscheinlich für die meisten User hier sehr trivial. 🙁

Ich rufe über ein Submenü-Eintrag ein Form auf, und wenn dies erfolgt soll der Menüeintrag deaktiviert werden und wenn ich das Form wieder schließe dann aktiviert.

Mein Problem ist dass ich keine Ahnung habe wie ich das anstellen soll, dass ich von meinem Form1 auf das Menü des MDIForms zugreifen kann. 🤔

Code im MDIForm1


private void form1StripMenuItem_Click(object sender, EventArgs e)
{
Form1 f = new Form1();
f.MdiForm1 = this;
f.Show();
}

Code im Form1


private void Form1_Load(object sender, EventArgs e)
{
//deaktivieren (theo. Ansatz)
MdiForm1.form1StripMenuItem.Enabled = false
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//aktivieren (theo. Ansatz)
MdiForm1.form1StripMenuItem.Enabled = true
}

LG
Mighty

PS: Bitte... bitte... verständlich erklären.

915 Beiträge seit 2006
vor 15 Jahren

Hallo Mighty Panther,

keine Angst hier wurde noch niemand gebissen wegen einer Frage 🙂

Das was du brauchst ist das Form.Load Event die du auf deinem MDIContainer (Hauptformular, in dem die MDIForms initialisiert werden).
Wie du das genau machst findest du in folgenden Link: [FAQ] Eigenen Event definieren / Information zu Events

Wenn du das Event in deinem MDIContaine abonomiert hast, einfach den menüpunkt auf <Menu>.Enabled = false stellen und das war es. Wenn das Formular wiederum geschlossen wird, das ist dass Closed Event des MDIForms, dann den Menüpunkt auf <Menu>.Enabled = true stellen um diesen wieder verfügbar zu machen.

/PS

Wenn es etwas gehobener sein darf, schau mal im Netz nach CommandPattern -> Actions / ActionPattern. Das ganze basiert ebenso auf Events aber beinhaltet einer absolut saubere Ausführung von Events die beim initalisieren eines MDIForms sich selbst abonomieren.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

5.299 Beiträge seit 2008
vor 15 Jahren

Hi!

Ich täte vorschlagen, du deaktivierst das MenuItem nicht, wenn das assoziierte Form angezeigt wird, sondern änderst seine Reaktion, sodaß du mit dem Click entweder das entsprechende Form anzeigst, oder es nach vorn holst.

Irgendwie wie


\**Click**
ChildForm.IsDisposed ? ChildForm = CreateAndAddAndShowANewChildForm() : ChildForm.BringToFront() ;

Der frühe Apfel fängt den Wurm.

Mighty Panther Themenstarter:in
22 Beiträge seit 2008
vor 15 Jahren

Danke für die Tips!

Mit dem "nach vornbringen" ist eine gute Idee.

Wobei ich als Newbie mich mit den Events trotzdem auseinander setzen muss,
damit ich C# besser verstehen kann.

LG
Mighty