这个是我截图,左边是固定的splitContainer.panel1,右边是我要显示的form窗体。
比如,这个图。我现在 点击 “确定增加” 后,我希望右边的窗体内容全部重载,或者 显示另外窗体的内容。但是我现在的方法不得行。
我左边按钮的代码如下:
public string thisFromStr = null;//jy,存储当前窗体的标识
        public Form frm = null;//jy,静态窗体#region 显示指定窗体,仅显示1个窗体
        /// <summary>
        /// 显示指定窗体,仅显示1个窗体
        /// </summary>
        /// <param name="frm1">窗体名称</param>
        /// <param name="frmStr">窗体标识</param>
        public void ShowForm(Form frm1, string frmStr)
        {
            splitContainer1.Panel2.Controls.Clear();//这里是清空panel2中的控件的。
            //jy.MDI mdi = new jy.MDI();
            //打开窗口,如果窗体资源被释放或者为空时
            if (frm == null || frm.IsDisposed)
            {
                thisFromStr = frmStr;//赋值当前窗口标识
                frm = frm1;
                frm.TopLevel = false; //设置子窗体为非顶级窗体
                frm.Parent = this.splitContainer1.Panel2;
                //frm.BackColor = ColorTranslator.FromHtml("#a0a0a0");
                //frm.MdiParent = this;
                //frm.TopLevel = true;
                //frm.TopMost = true;
                frm.Show();
            }
            else
            {
                //激活窗体
                if (thisFromStr == frmStr)
                {
                    frm.Activate();
                }
                else
                {
                    thisFromStr = frmStr;//赋值当前窗口标识
                    frm.Close();
                    frm = frm1;
                    frm.TopLevel = false; //设置子窗体为非顶级窗体
                    frm.Parent = this.splitContainer1.Panel2;
                    //frm.BackColor = ColorTranslator.FromHtml("#a0a0a0");
                    frm.Show();
                }
            }
        }
        #endregion
        private void button4_Click(object sender, EventArgs e)
        {
            ShowForm(new 客户信息(), "kehuxinxi");
        }        private void button5_Click(object sender, EventArgs e)
        {
            ShowForm(new 修改密码(), "editpassword");
        }
目前,我右边的按钮是这样写的:private void button1_Click(object sender, EventArgs e)
        {
            MDI mdi = new MDI();
            //mdi.ShowForm(new 修改密码(), "mimaxiugia");
            mdi.ShowForm(new 业务查询(), "yewuchaxun");
}但是这样写,右边panel2没有任何反应,还是我按钮点击前 输入信息的那个状态。

解决方案 »

  1.   

    ShowForm(Form frm1, string frmStr)
    这方法改成
    ShowForm(Panel frm1, string frmStr)
    然后需要在这里面显示的窗体的父类也改成Panel例如:
    你原来的业务查询窗体:
    public class  业务查询:Form
    改成
    public class  业务查询:Panel
      

  2.   

    不明白你为什么要重新加载右边的窗口  如果只是想让值清空那么就麻烦点重新调用绑定combobox的方法并把textbox的值清空就可以了
      

  3.   


    我测试了,还是不行啊,主要是我要在右边界面(panel2)显示的窗体里面点击按钮时候,来消除panel2里面现有的窗体,并装载新的窗体到panel2里面
      

  4.   

    自己搞定
                        Form f = new 业务登记();
                        f.TopLevel = false;
                        f.Visible = true;
                        f.Parent = this.Parent;
                        this.Parent.Controls.Add(f);
                        this.Dispose();
                        this.Close();