C#如何在Panel或者GroupBox控件中自由地切换其他窗体

如果想要在C#中做如下所述的功能:

通过点击按钮等动作,切换Panel或者GroupBox控件中显示的窗体。

具体要如何实现呢?

下面演示如何在Panel中实现该效果。

其实方法很简单,基本思路就是每次点击事件发生后,清空Panel中的所有Controls,然后添加你需要的窗体进来。详细步骤如下所示。


1. 添加3个窗体分别为Win1,Win2,Win3。在主窗体(PanelSwitch)中添加1个Panel,4个Button。

C#如何在Panel或者GroupBox控件中自由地切换其他窗体_第1张图片


2. 设置3个窗体的属性 

C#如何在Panel或者GroupBox控件中自由地切换其他窗体_第2张图片 C#如何在Panel或者GroupBox控件中自由地切换其他窗体_第3张图片  C#如何在Panel或者GroupBox控件中自由地切换其他窗体_第4张图片


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. 运行看实现的效果



你可能感兴趣的:(C#)