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
msPS: Wozu brauchst du die Klasse Edit?