已知有三个窗体,分别为 Form1(主窗体)、Form2、Form3;
Form1中包含button1和splitContainer1(左右型,splitContainer1.panel1、splitContainer1.panel2)两个控件;
Form2中包含button2控件;如下图:当点击Form1中的button1时,在splitContainer1.panel1中显示Form2,然后点击Form2中的button2,在
splitContainer1.panel2中显示Form3,请问能否实现?(类似bs结构中的Frameset架构)
Form1中包含button1和splitContainer1(左右型,splitContainer1.panel1、splitContainer1.panel2)两个控件;
Form2中包含button2控件;如下图:当点击Form1中的button1时,在splitContainer1.panel1中显示Form2,然后点击Form2中的button2,在
splitContainer1.panel2中显示Form3,请问能否实现?(类似bs结构中的Frameset架构)
解决方案 »
- c#读取字节数组,快来帮忙看下
- 用DotMSN如何获取MSN的昵称?
- C#:页面设置对话框选取自定义纸张的问题
- 关于label的背景颜色问题
- 请问,有没有可能通过编程实现登陆QQMSN判断某个好友是否在线,发送消息?
- 100分求不同Project的两个Form操作的解决办法
- C#真的像书里写的那样容易学吗?
- Form问题,form间的跳转
- 请问:在winform中如何在打开另一个窗口后将当前窗口关闭?
- Win窗体程序能否接受命令行参数-我没有测试过,给出简单方法马上结贴
- .net编写的winform程序,无法启动
- C#,用到Treeview选择了checkbox属性,怎么才能使得勾选父节点后子节点全部被选中?谢谢
thanks to xs8577:
能否给点代码?
直接拖上去的话,直接写button2事件,在里面就可以访问到splitContainer1啊
splitContainer1是直接拖上去,隶属于form1的控件
form3.Dock = DockStyle.Fill;
splitContainer1.Panel2.Controls.Add(form3);
应该没问题吧?
点击form1的button1时,可以实现在splitContainer1.panel1中显示form2,例如: private void button1_Click(object sender, EventArgs e)
{
if (f2 == null) //f2是form1的成员变量;
{
f2 = new form2();
f2.TopLevel = false;
f2.FormBorderStyle = FormBorderStyle.None;
f2.Dock = DockStyle.Fill;
this.splitContainer1.Panel1.Controls.Add(f2);
f2.Visible = true;
this.splitContainer1.Panel1.Controls.SetChildIndex(f2,0);
}
else
{
this.splitContainer1.Panel1.Controls.SetChildIndex(f2,0);
}
}
但是点击form2的button2时,却捕捉不到splitContainer1.panel2, 因为button2_Click是在form2发生,是form2的成员函数,而splitContain1.panel2是form1的成员
从Form2的父级访问Panel2试试
form2的父级好是splitContainer1.panel1
SplitContainer sp = (SplitContainer)this.Parent.Parent.Controls.Find("splitContainer1", true)[0];
sp.Panel2.Controls.Clear();
sp.Panel2.BackColor = Color.Red;
到底有几个Parent...你就自己看了
f2.TopLevel = false;
不想每次都设置这个的话,直接把这个窗体的继承类从Form改成UserControl就可以了