Laden...

MDI Container > Child > Child

Erstellt von ZeroQool vor 16 Jahren Letzter Beitrag vor 16 Jahren 688 Views
Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 16 Jahren
MDI Container > Child > Child

Hallo, folgendes Problem

Ich habe einen MDI Container u ich dem rufe ich ein ChildFenster auf

    private void buttonItem_Einstellungen_EMailTexte_Uebersicht_Click(object sender, EventArgs e)
    {
      EMailTexte_Uebersicht = new frm_EMailTexte_Uebersicht();
      bool offen = false;
      for (int i = 0; i < this.MdiChildren.Length; i++)
      {
        if (typeof(frm_EMailTexte_Uebersicht) == this.MdiChildren[i].GetType())
          offen = true;
      }

      if (offen == false)
      {
        EMailTexte_Uebersicht.MdiParent = this;
        EMailTexte_Uebersicht.Initialisierung();

        EMailTexte_Uebersicht.Show();
      }
    }

In dem Fenster habe ich ein Datagrid u wenn ich eine Zeile markiere möchte ich über die rechte Maustaste zB etwas neu erstellen oder die Zeile ändern u dabei wird ein neues Fenster aufgerufen u dieses möchte ich wieder als Child haben u dabei soll im obersten MDI Container bestimmte Buttons ausgeblendet bzw weggeblendet werden

zB

  ribbonTabItem_Auktionsuebersicht.Visible = false;
        ribbonTabItem_AuctionInspector.Visible = false;
        ribbonTabItem_Einstellungen.Visible = false;

Habe jetzt nicht so eine gute Idee wie ich das realisieren kann. Habe zuerst versucht über den ERSTELL/ÄNDERN Button eine Prozedur im MDI Container auszulösen, aber funktioniert nicht. Bringt zwar keine Fehlermeldung, aber es verändert sich nichts

    public void SprachCodeHinzufuegen()
    {
      frm_EMailSprachcodeHinzufuegen EMailSprachcodeHinzufuegen = new frm_EMailSprachcodeHinzufuegen();
      EMailTexte_Uebersicht = new frm_EMailTexte_Uebersicht();
      
      bool offen = false;
      for (int i = 0; i < this.MdiChildren.Length; i++)
      {
        if (typeof(frm_EMailSprachcodeHinzufuegen) == this.MdiChildren[i].GetType())
          offen = true;
      }

      if (offen == false)
      {
        EMailSprachcodeHinzufuegen.MdiParent = this;


        ribbonTabItem_MeinEbay.Visible = false;
        ribbonTabItem_Auktionsuebersicht.Visible = false;
        ribbonTabItem_AuctionInspector.Visible = false;
        ribbonTabItem_Einstellungen.Visible = false;
        EMailTexte_Uebersicht.Hide();
        EMailSprachcodeHinzufuegen.Show();
      }
    }

Danke im voraus

915 Beiträge seit 2006
vor 16 Jahren

Hrm, am besten wäre hierfür das CommandPattern (Forum Suche: Action) Prinzip.

Wenn versuchst innerhalb eines MDI Containers Events von verschieden vielen Formularen abzuarbeiten wird das viel zu kompliziert.

Wichtiger ist das die Formulare vorgeben was der MDI Container überhaupt an Controls besitzen darf, wenn dieses den Focus besitzt. Mach deinen MDI Container zur Singleton, gebe z.B die Menüs nach aus. Wenn ein Form den zustand aktiviert besitzt lade die Menüs rein, wenn ein Form den Zustand deaktiviert besitzt dann lade dessen Menüs wieder heraus.

Die CommandPattern (Actions) machen nun Sinn da sich manche Menüaktionen wiederholen.

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