在自定义的panel中动态加载窗体解决方法

在自定义的panel中动态加载窗体
[size=13px]在菜单点击一个菜单项,弹出一个form,我想实现这个form中的空间全部加载到一个panel中;
控件我加载进去了,可是form及里面的控件对应的事件我没加载进去,请问要如何处理?
for (int i = r - 1; i >= 0; i--)
{
      panelContainer.Controls.Add(m_FormEditFeature.Controls[i]);     //(frm.Handle)
}
controls[i]对应的事件如何加载到 panelContainer 中。
[/size]
------解决思路----------------------
//记录添加到panel 中的 form.
private static List<Form> frmList = new List<Form>();

        /// <summary>
        /// 在容器中显示窗体
        /// </summary>
        /// <param name="parent">父容器</param>
        /// <param name="form">窗体名称</param>
        /// <param name="pos">窗体初始位置</param>
        /// <param name="state">窗体显示模式</param>
        /// <returns></returns>
        public static bool CreateFormClass(Panel parent, Form form, FormStartPosition pos, FormWindowState state)
        {
            try
            {
                if (parent != null)
                {
                    if (frmList != null)
                    {
                        while (frmList.Count > 0)
                        {
                            frmList[0].Close();
                            frmList[0].Dispose();
                            frmList.Remove(frmList[0]);
                        }
                    }
                    if (parent.HasChildren)
                    {
                        parent.Controls.Clear();
                    }
                    form.TopLevel = false;
                    form.Parent = parent;
                    form.WindowState = state;
                    form.StartPosition = pos;
                    form.Show();
                    frmList.Add(form);
                    return true;
                }
                else
                {
                    form.Parent = null;
                    form.TopLevel = true;
                    switch (state)
                    {
                        case FormWindowState.Maximized:
                        {
                            form.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
                            form.WindowState = FormWindowState.Maximized;
                            break;
                        }
                        default:
                        {
                            form.WindowState = state;
                            break;
                        }
                    }
                    form.StartPosition = pos;
                    form.ShowDialog();
                    return true;
                }
            }
            catch (Exception ex)
            {
                return false;
            }
        }

我这里每次new 新form 时,  都将之前的释放了.

可以将窗体显示在容器中, 也可以以指定方式的显示..
楼主可以修改下试试.
------解决思路----------------------
右侧如果只有两个panel,可以放个SplitContainer,Dock属性设置成Fill
如果有多个panel,可以SplitContainer里再嵌套SplitContainer,或者根据窗体高度动态修改每个panel的大小
位置不用管,只要把属性都设置成top,它自己就会跟着走了

或者上面的设置成top,最下面的设置成fill