WinForm下实现子窗体

如果想要实现在同一个Form下的子窗体切换,下面的方法可以实现。

1. 窗体设计,如图

2. 增加子窗体。鼠标右键项目,选择添加,选择用户控件

  • 注意修改用户控件的大小尺寸,和GroupBox的尺寸匹配。

3. 建立好子窗体后,在主Form里面先声明各个子窗体类,如下:

1
2
3
4
5
//定义用户窗口变量
public windows1 w1;
public windows2 w2;
public windows3 w3;
public windows4 w4;

4. 在加载主Form事件时选择实例化各个子窗体类

1
2
3
4
5
6
7
8
9
//加载时赋值
private void Form1_Load(object sender, EventArgs e)
{
//实例化
w1 = new windows1();
w2 = new windows2();
w3 = new windows3();
w4 = new windows4();
}

5. 为每个要显示子窗体创建一个按钮,目的是点击按钮切换至子窗体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 //output_fun
public void output_fun(string str)
{
textBox1.AppendText(DateTime.Now.ToString()+ ":" + str + "\r\n");
}

//显示用户窗口1
private void button1_Click(object sender, EventArgs e)
{
w1.Show();
groupBox1.Controls.Clear();
groupBox1.Controls.Add(w1);
output_fun("show windows1");
}

//显示用户窗口2
private void button2_Click(object sender, EventArgs e)
{
w2.Show();
groupBox1.Controls.Clear();
groupBox1.Controls.Add(w2);
output_fun("show windows2");
}

//显示用户窗口3
private void button3_Click(object sender, EventArgs e)
{
w3.Show();
groupBox1.Controls.Clear();
groupBox1.Controls.Add(w3);
output_fun("show windows3");
}

//显示用户窗口4
private void button4_Click(object sender, EventArgs e)
{
w4.Show();
groupBox1.Controls.Clear();
groupBox1.Controls.Add(w4);
output_fun("show windows4");
}

6. 至此,一个最简单创建子窗体的方法就完成了。

  • 如果有需要把子窗体里面的变量值传到主程序里面
    • 用委托
    • 子窗体内做一个返回值(或者元组)的方法
    • 建立一个单独的静态类专门用来读写值
    • 用json或者yaml做变量管理

WinForm下实现子窗体
http://example.com/2024/07/21/WinForm下实现子窗体/
作者
xiao cuncun
发布于
2024年7月21日
许可协议