Problem mit MDI



  • Hallo!
    mit den mainmenu will ich ein neues EditWindow erstellen. aber wie bekomm ich das in das MainWindow.MdiParent?

    class Edit
    {
        public class MainWindow : Form
        {
            public MainWindow()
            {
                this.Text = "main";
                this.IsMdiContainer = true;
                this.Menu = new MMenu();
            }
    
            public static void Main()
            {
                Application.Run(new MainWindow());
            }
        }
        public class MMenu : MainMenu
        {
            public MMenu()
            {
                MenuItem mItem_File = new MenuItem("&File");
                MenuItem mItemFile_New = new MenuItem("&New");
                this.MenuItems.Add(mItem_File);
                mItem_File.MenuItems.Add(mItemFile_New);
                mItemFile_New.Click+= new EventHandler(this.mItemFile_Click);
            }
            private void mItemFile_Click(object sender, EventArgs e)
            {
                EditWindow ew = new EditWindow();
                ew.Show();
            }
        }
        public class EditWindow : Form
        {
            public EditWindow()
            {
                this.Text = "Edit";
            }
    
        }
    
    }
    

    danke!



  • Hi,

    ich hab die Klasse MMenu rausgeschmissen und das Erzeugen der Menüs in den Konstruktor von MainWindow verschoben.
    Somit kann man dann in der Click-Methode einfach mit this das MdiParent setzen.

    using System;
    using System.Windows.Forms;
    
    namespace Edit
    {
        public class MainWindow : Form 
        {
            public MainWindow()
            {
                this.Text = "main";
                this.IsMdiContainer = true;
    
                MenuItem mItem_File = new MenuItem("&File");
                MenuItem mItemFile_New = new MenuItem("&New");
                this.Menu = new MainMenu();
                this.Menu.MenuItems.Add(mItem_File);
                mItem_File.MenuItems.Add(mItemFile_New);
                mItemFile_New.Click += new EventHandler(mItemFile_Click);
    
            }
    
            private void mItemFile_Click( object sender, EventArgs e)
            {
                EditWindow ew = new EditWindow();
                ew.MdiParent = this;
                ew.Show();
            }
    
            public static void Main()
            {
                Application.Run(new MainWindow());
            }
        }
    
        public class EditWindow : Form
        {
            public EditWindow()
            {
                this.Text = "Edit";
            }
        }
    }
    

    Willst du trotzdem eine eigene Klasse fürs Menü haben, müßtest du MdiParent und die Callbackfunktion z.B. gleich im Konstruktor mitgeben. Hab ich aber noch nicht probiert.

    grüße
    ms

    PS: Wozu brauchst du die Klasse Edit?


Anmelden zum Antworten