如果想要实现在同一个Form下的子窗体切换,下面的方法可以实现。
-
窗体设计,如图
-
增加子窗体。鼠标右键项目,选择添加,选择用户控件
- 注意
修改用户控件的大小尺寸
,和GroupBox的尺寸匹配。
- 建立好子窗体后,在主Form里面先声明各个子窗体类,如下:
//定义用户窗口变量public windows1 w1;public windows2 w2;public windows3 w3;public windows4 w4;
- 在加载主Form事件时选择实例化各个子窗体类
//加载时赋值private void Form1_Load(object sender, EventArgs e){//实例化w1 = new windows1();w2 = new windows2(); w3 = new windows3(); w4 = new windows4();}
- 为每个要显示子窗体创建一个按钮,目的是点击按钮切换至子窗体
//output_funpublic void output_fun(string str){textBox1.AppendText(DateTime.Now.ToString()+ ":" + str + "\r\n");}//显示用户窗口1private void button1_Click(object sender, EventArgs e){w1.Show();groupBox1.Controls.Clear();groupBox1.Controls.Add(w1);output_fun("show windows1"); }//显示用户窗口2private void button2_Click(object sender, EventArgs e){w2.Show();groupBox1.Controls.Clear();groupBox1.Controls.Add(w2);output_fun("show windows2");}//显示用户窗口3private void button3_Click(object sender, EventArgs e){w3.Show();groupBox1.Controls.Clear();groupBox1.Controls.Add(w3);output_fun("show windows3");}//显示用户窗口4private void button4_Click(object sender, EventArgs e){w4.Show();groupBox1.Controls.Clear();groupBox1.Controls.Add(w4);output_fun("show windows4");}
- 至此,一个最简单创建子窗体的方法就完成了。
- 如果有需要把子窗体里面的变量值传到主程序里面
- 用委托
- 子窗体内做一个返回值(或者元组)的方法
- 建立一个单独的静态类专门用来读写值
- 用json或者yaml做变量管理