//childForm:定义父窗体属性:Fmain(public);//主窗体:
实例化子窗体;
调用前对子窗体赋值:Fmain = this;注意在窗体重你的动态生成菜单的方法改成public然后在子窗体关闭前,对父窗体重新生成菜单

解决方案 »

  1.   

    就是在窗体重你的动态生成菜单的方法改成public不这样也行。
    f2.showDialog(this);
    rebuildmenu();
      

  2.   

    把 主窗估 mainFrom 中的 p 设有 public;
    并在 子窗品 chFrom 中也定议一个 public p;private void Openfrom()   //加入主窗体中
    {
         chFrom myfrom = new chFrom();
         myfrom.p= this.p;
         myfrom.showDialog();
         this.p= myfrom.p;
         myfrom.Dispose ();
         //在这里更改你的主菜单你行了
    }
      

  3.   

    orjava() :
    你的办法不可行,你那个是子窗体加载时候运行的吧!?
      

  4.   

    有点实现我的意思了,但是把更改菜单的函数应chFrom的closing事件中,因为楼主说:
    “我又创建一个用来登陆的子窗口,要求在窗体关闭的时候,更改父窗口中P的值”
      

  5.   

    把需要更改的string 和 Menu对象传给子窗口,子窗口关闭事件中便可进行相关操作,完全可以用Menu的Clear方法然后再重建Menu。就像在父窗口操作菜单刷新一样。
      

  6.   

    其他几位的方法我还是没有弄明白!
    我在子窗体中这么写:
    main mf=new main();
    mf.Menu=null;
    mf.CreateMenu("@A=1|A1=1|A2=1|A3=1|A4=1|B=1|B1=1|B2=1|B3=1|B4=1|C=1|C1=1|C2=1|C3=1");
    但是无效!请大家继续帮我!
      

  7.   

    boyxia(=>无天刀绝 [I LOVE DOTNET]<=) :
    原谅我的菜吧!如何传递!?
      

  8.   

    菜单创建的方法我一开始就设为了public 我觉得,是不是因为在CreateMenu中的那个this.menu=this有问题!?
      

  9.   

    开子窗体时这样
    Cldform cld=new Cldform();
    cld.owner=this;//this就是mainform
    cld.show;
    在子窗体的closing事件中这样写
    MainForm mf=(MainfForm)this.owner;
    mf.P="@A=1|A1=1|A2=1|A3=1|A4=1|B=1|B1=1|B2=1|B3=1|B4=1|C=1|C1=1|C2=1|C3=1";//P必须为public的
    mf.CreateMenu(mf.P);
      

  10.   

    谢谢lxrxyz(无忧十年) ,问题已经解决了!
    你的这个方法应该还可以应该到更多的地方吧!
    嘿嘿