MDI im Panel


anmae

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein MDI Formular, welches einen Splittercontainer besitzt und in einem Panel dieses Splittercontainers habe ich ein Panel namens MDIContainer. Dieser wird zum Parent meiner MDIChild Formulare, wodurch er die MDI Area begrenzt. Das klappt alles wunderbar.
Ich habe dann noch eine Liste der Formulare, wodurch ich Zugriff auf die einzelnen Fenster habe. Das klappt auch, also ich kann mit dem Index den Titel des Fensters etc. auslesen.

Alle anderen MDI Funktionen funktionieren jedoch nicht. this.MDIChildren ist leer, somit kann ich - trotz dem Handle zum jeweiligen Form - kein Aktivate() machen um es in den Vordergrund zu holen. MdiLayout.Cascade bleibt ebenfalls ohne Auswirkung.

Hier mein Code, wie ich die MDIChilds einfüge:
Code:
        public void AddMDIWindow(Defines.Groupwindowtype WindowType) 
        {
            //Initiales Fenster in den MDI Container laden
            GroupWindow Window = new GroupWindow(WindowType);
            Window.MdiParent = this;                 //Parent ist das Haupt MDI Fenster
            Window.Parent = this.MDIContainer; //MDIParent ist das Panel

            int index = WindowList.Add(Window); //Fensterhandel in Liste speichern
            Window.Show();
           
            //Fenster der Fensterliste (Für Taskbar) zufügen
            updateTaskbar();
        }
Und der Code zum Zugriff auf das Fenster, welcher nicht funktioniert
Code:
        private void TaskBar_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            int WindowIndex = System.Convert.ToInt32(e.ClickedItem.Name);
            ((Form)WindowList[WindowIndex]).Activate(); //Handle ist korrekt, es passiert jedoch nichts

            this.MdiChildren[WindowIndex].Activate(); //MdiChildren ist leer, somit geht das hier gar nicht
            
            this.ActivateMdiChild((Form)WindowList[WindowIndex]); //macht ebenfalls nichts
            this.LayoutMdi(System.Windows.Forms.MdiLayout.Cascade); //auch nichts

        }

Danke schonmal für eure Ideen
 

Spyke

Premium-User
warum willst du Activate aufrufen.
Wäre nicht BringToFront das passendere?

Und da der Parent der Child Form ja ein Panel ist könnte ich mir gut vorstellen das die ChildForms ev. in der ControlCollection des Panels (Eigenschaft Controls) stehen.
(Ist nur ne Vermutung, hab so noch nie mit Mdi gearbeitet, werds aber aufjedenfall mal ausprobiern wenn ich Zeit finde)