如果想要在C#中做如下所述的功能:
通过点击按钮等动作,切换Panel或者GroupBox控件中显示的窗体。
具体要如何实现呢?
下面演示如何在Panel中实现该效果。
其实方法很简单,基本思路就是每次点击事件发生后,清空Panel中的所有Controls,然后添加你需要的窗体进来。详细步骤如下所示。
1. 添加3个窗体分别为Win1,Win2,Win3。在主窗体(PanelSwitch)中添加1个Panel,4个Button。
2. 设置3个窗体的属性
3. 编写控件Click事件
Win1 w1;
Win2 w2;
Win3 w3;
private void PanelSwitch_Load(object sender, EventArgs e)
{
w1 = new Win1();
w2 = new Win2();
w3 = new Win3();
}
private void button1_Click(object sender, EventArgs e)
{
this.panel1.Controls.Clear(); // 清空原有的控件
w1.TopLevel = false; // 非顶级窗口
w1.FormBorderStyle = FormBorderStyle.None; // 不显示标题栏
w1.Dock = System.Windows.Forms.DockStyle.Fill; // 填充panel
this.panel1.Controls.Add(w1); // 添加w1窗体
w1.Show();
}
private void button2_Click(object sender, EventArgs e)
{
this.panel1.Controls.Clear(); // 清空原有的控件
w2.TopLevel = false; // 非顶级窗口
w2.FormBorderStyle = FormBorderStyle.None; // 不显示标题栏
w2.Dock = System.Windows.Forms.DockStyle.Fill; // 填充panel
this.panel1.Controls.Add(w2); // 添加w2窗体
w2.Show();
}
private void button3_Click(object sender, EventArgs e)
{
this.panel1.Controls.Clear(); // 清空原有的控件
w3.TopLevel = false; // 非顶级窗口
w3.FormBorderStyle = FormBorderStyle.None; // 不显示标题栏
w3.Dock = System.Windows.Forms.DockStyle.Fill; // 填充panel
this.panel1.Controls.Add(w3); // 添加w3窗体
w3.Show();
}
private void button4_Click(object sender, EventArgs e)
{
this.panel1.Controls.Clear();
}
4. 运行看实现的效果