日期:2014-05-17  浏览次数:20606 次

动态创建MenuStrip 为每一个菜单项 添加Click 事件 在窗体中点击菜单的时候 执行click方法 但是mdiparent无效
我在类里面分装了一个动态创建MenuStrip的方法
这个MenuStrip的信息是菜单信息

然后为子菜单添加click方法
代码如下:
  //为功能节点添加单击事件
                if (dv[i]["url"] + "" != "")
                {
                    subMenu.Tag = dv[i]["url"] + "";
                    //如果当前方法为非静态方法
                    //那么public static Delegate CreateDelegate(Type type, object firstArgument, MethodInfo method, bool throwOnBindFailure)
                    // 创建指定类型的委托,该委托表示要按指定的大小写敏感度对指定类实例调用的指定实例方法。
                    //Activator.CreateInstance(T)
                    //创建实例方法的委托
                    Delegate EventAgent = Delegate.CreateDelegate(typeof(EventHandler), Activator.CreateInstance(T), T.GetMethod(dv[i]["url"] + "", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance), false);

                    subMenu.Click += EventAgent as EventHandler;

                }


代码都是好的

现在的问题是
当我在窗体中(Form1)
点击一个菜单项的时候
要弹出子菜单的窗体
此时的Form1为父窗体
弹出的为子窗体

但是不能实现这个效果
代码如下
       
public void Add(object sender, EventArgs e)
        {
             Form2 ChildWin=new Form2();
             ChildWin.MdiParent = this;//这个代码无效
             ChildWin.Show();
        }

------解决方案--------------------
看看this是什么类型,使用Parent 看看
------解决方案--------------------
this如果是Form的话,先写一句
this.IsMdiContainer = true;
试试。
------解决方案--------------------


            CMenuStrip
            {
                private Form formParent;
                public CMenuStrip(Form parent)
                {