C#使用splitContainer显示窗体问题

ganyue810 2013-03-29 12:31:10

这个是我截图,左边是固定的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没有任何反应,还是我按钮点击前 输入信息的那个状态。
...全文
705 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
华生 2013-03-30
  • 打赏
  • 举报
回复
不明白你为什么要重新加载右边的窗口 如果只是想让值清空那么就麻烦点重新调用绑定combobox的方法并把textbox的值清空就可以了
我是老姚 2013-03-30
  • 打赏
  • 举报
回复
ShowForm(Form frm1, string frmStr) 这方法改成 ShowForm(Panel frm1, string frmStr) 然后需要在这里面显示的窗体的父类也改成Panel例如: 你原来的业务查询窗体: public class  业务查询:Form 改成 public class  业务查询:Panel
ganyue810 2013-03-30
  • 打赏
  • 举报
回复
没有人回答吗?
ganyue810 2013-03-30
  • 打赏
  • 举报
回复
自己搞定
        Form f = new 业务登记();
                    f.TopLevel = false;
                    f.Visible = true;
                    f.Parent = this.Parent;
                    this.Parent.Controls.Add(f);
                    this.Dispose();
                    this.Close();
ganyue810 2013-03-30
  • 打赏
  • 举报
回复
引用 2 楼 aley 的回复:
ShowForm(Form frm1, string frmStr) 这方法改成 ShowForm(Panel frm1, string frmStr) 然后需要在这里面显示的窗体的父类也改成Panel例如: 你原来的业务查询窗体: public class 业务查询:Form 改成 public class 业务查询:Panel
我测试了,还是不行啊,主要是我要在右边界面(panel2)显示的窗体里面点击按钮时候,来消除panel2里面现有的窗体,并装载新的窗体到panel2里面

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧