我新建了一个父窗体(Mainform),3个子窗体(oneform,twoform,threeform)
父窗体中有一个menuStrip控件,我想在打开和激活oneform窗体的时候会动态的添加一个菜单项,而当我点击别的子窗体则该菜单项消失(已经同时打开该3个子窗体)!我试着在oneform的构造函数里写了这么一段代码MainForm mf=new MainForm();
            mf=(MainForm)this.MdiParent;
            mf.menuStrip1.Items.Add("添加");
不过没成功,希望有高手能帮帮忙

解决方案 »

  1.   

     1using System;
     2using System.Collections.Generic;
     3using System.ComponentModel;
     4using System.Data;
     5using System.Drawing;
     6using System.Text;
     7using System.Windows.Forms;
     8
     9namespace WindowsApplication2
    10{
    11    public partial class Form1 : Form
    12    {
    13        public Form1()
    14        {
    15            InitializeComponent();
    16
    17        }
    18
    19        private void toolStripButton1_Click(object sender, EventArgs e)
    20        {
    21            Form2 form = new Form2();
    22            ToolStripMenuItem item = new ToolStripMenuItem((this.MdiChildren.Length + 1).ToString());
    23            toolStripDropDownButton1.DropDownItems.Add(item);
    24            form.MdiParent = this;
    25            form.Text = item.Text;
    26            ToolMenuItemEven rm = new ToolMenuItemEven(this, form, item);
    27            form.Show();
    28        }
    29    }
    30
    31    public class ToolMenuItemEven
    32    {
    33        private Form form = null;
    34        ToolStripMenuItem item = null;
    35        private Form1 mdiForm;
    36
    37        public ToolMenuItemEven(Form1 mdiForm, Form fm, ToolStripMenuItem item)
    38        {
    39            this.mdiForm = mdiForm;
    40            this.form = fm;
    41            this.item = item;
    42            fm.Disposed += new EventHandler(RemoveItem);
    43            item.Click += new EventHandler(ItemClick);
    44            ItemClearCheck();
    45            item.Checked = true;
    46            item = null;
    47            fm = null;
    48        }
    49
    50        private void RemoveItem(object obj, EventArgs e)
    51        {
    52            if (mdiForm != null)
    53            {
    54                mdiForm.toolStripDropDownButton1.DropDownItems.Remove(item);
    55            }
    56        }
    57
    58        private void ItemClick(object sender, EventArgs e)
    59        {
    60            if (form != null && item != null)
    61            {
    62                form.Activate();
    63                ItemClearCheck();
    64                item.Checked = true;
    65            }
    66        }
    67
    68        private void ItemClearCheck()
    69        {
    70            foreach (ToolStripMenuItem it in mdiForm.toolStripDropDownButton1.DropDownItems)
    71            {
    72                it.Checked = false;
    73            }
    74        }
    75    }
    76}