在子窗體中的按鈕事件中加入﹕
private void button1_Click(object sender, System.EventArgs e)
{
((Form1)this.MdiParent).menuItem2.Enabled=false;
}
注﹕Form1是父窗體名﹐menuItem2是父窗體中的菜單

解决方案 »

  1.   

    LiSDN(LOCK ON):
    有这样的错误信息
    “System.Windows.Forms.Form”并不包含对“menuItem2”的定义
      

  2.   

    哦﹐﹐忘了一點﹐﹐請把menuItem2的Modifiers屬性改為public
      

  3.   

    LiSDN(LOCK ON):
    改完后问题还在。
    “System.Windows.Forms.Form”并不包含对“menuItem2”的定义
      

  4.   

    其實  raulredondo 已經說出了解決方法.
      1> 在 Child Form 的 Constructor 中加一參數
         如 public ChildForm(System.Windows.Forms.MenuItem menuitem);
      2)在打開 Child Form 的時,把這個物件傳過去就可以了
        ChildForm cf = new ChildForm(this.MenuItem2);
      

  5.   

    您说的意思:
    父窗体ParentForm打开子窗体
    //------打开子窗体cf------------------------------------
    ChildForm cf = new ChildForm(this.menuItem2);
    cf.MdiParent=this;
    cf.Show();
    //------------------------------------------
    子窗体ChildForm中
    public ChildForm (System.Windows.Forms.MenuItem menuItem)
    {
    //......
    menuItem.Enabled=true;
    //......
    }
    这样是可以的。我先谢谢。
    但还不能实现我程序中的功能。功能是程序运行时(父窗体ParentForm)有个登录窗口(子窗体cf)
    根据用户输入的姓名不同显示相应的菜单。
    具体如下:
    父窗体ParentForm打开后,在ParentForm_Load(object sender, System.EventArgs e)
    {
    //......
    事件中打开子窗体cf(如上面所示)
    //......
    }
    子窗体cf中按钮button1_Click(object sender, System.EventArgs e)
    {
    //.....
    事件中让父窗体ParentForm中的多个顶级菜单或子菜单的Enabled属性等于false;
    例如
    menuItem1.Enabled=false;
    menuItem2.Enabled=false;
    menuItem3.Enabled=false;
    menuItem4.Enabled=false;
    menuItem5.Enabled=false;
    menuItem6.Enabled=false;
    menuItem7.Enabled=false;
    //.....
    }
    请指教。
      

  6.   

    将菜单声明为public,然后就可以引用了
      

  7.   

    怎么會不行呢?
    你的父窗體(Form1)中是否有menuItem2啊
      

  8.   

    [email protected])这是我的邮箱方便的话给个例子。万分感谢!
      

  9.   

    先把menuItem5的Modifiers屬性改為public
    然后((Form1)this.MdiParent).menuItem5.Checked=true;就可以了
    注意括号