三下五除二 发表于 2024-5-8 16:03:53

C#winform实现通过点击Button来切换不同的界面

C#winform实现通过点击Button来切换不同的界面

实现目标:点击左边菜单栏里面的Button实现右边区域切换不同界面。
步骤:
1.界面布局
由于实现目标需要用到容器控件,所以需要选择合适的容器控件来进行左右区域布局。常用的容器控件有:Panel,FlowLayoutPanel,GroupBox,TabControl,SplitContainer,TableLayoutPanel,ToolStripContainer。

[*]Panel。面板,提供基本的容器功能,可以包含其他控件,并可以设置滚动条和边框样式。
[*]FlowLayoutPanel。流式布局面板,自动排列内容,适用于在水平或垂直方向排列控件。
[*]GroupBox。分组框,用于将相关控件组织在一起,并提供一个标题。
[*]TabControl。选项卡控件,允许创建带有多个选项卡(TabPages)的界面,每个选项卡相当于一个独立的容器。
[*]SplitContainer。分割容器,由两个面板和一个拆分条组成,可以拖动拆分条来调整两个面板的大小。
[*]TableLayoutPanel。表格布局容器,使用表格方式组织控件,适用于需要精确控制控件位置的场景。
[*]ToolStripContainer。工具条容器,包含ToolStrip和其他相关控件。
此实现目标选择 SplitContainer 控件来进行界面布局。
SplitContainer

SplitContainer控件是一个用于将页面拆分成两个大小可调整的区域的容器控件,中间有一个拆分条,通过拖动拆分条来调整左右或上下区域的大小。
属性:

[*]FixedPanel:指定在调整控件大小时,某个面板的宽度或高度保持不变。
[*]Dock:控件的停靠方式,默认值为Fill。
[*]IsSplitterFixed:指定拆分条是否固定,如果为true,则拆分条不能被拖动。
[*]Orientation:指定拆分器是水平的还是垂直的,可选值为Horizontal或Vertical。
[*]Panel1、Panel2:获取SplitContainer控件的两个面板。
[*]SplitterDistance:指定拆分条与左边或上边的距离,单位为像素。
[*]SplitterWidth:指定拆分条的宽度或高度,单位为像素。
[*]SplitterIncrement:指定拆分条移动时的增量,单位为像素。
先创建主界面命名为Form_main,然后在工具栏中选择SplitContainer控件拖入到主界面中,调整好SplitContainer左右区域大小后再从工具栏中向左边区域拖入多个Buttona按钮,右边区域留着放界面
界面效果

 主体界面完成后再分别创建子界面。在解决方案中新增多个不同的窗口,将子窗口的大小设置成与右边区域大小一致并设置子窗口的FormBorderStyle属性为None,命名好不同窗口窗口名称方便后面调用。
界面效果(其他界面类似)

 至此界面布局完成,这里在子窗口上添加了一个Lable控件用于区分不同的界面。
2.功能实现
主体界面和子界面完成接下来实现具体功能。
思路:
1.点击按钮创建对应的子窗口对象,并显示子窗口
2.关闭其他按钮创建的子窗口
代码展示:
1.首先需要实现其他界面关闭方法。
1          /// <summary>
2         /// 关闭其他窗口
3         /// </summary>
4         private void CloseOtherForms()
5         {
6             // 获取当前打开的所有窗体
7             Form[] openForms = Application.OpenForms.Cast<Form>().ToArray();
8             foreach (Form form in openForms)
9             {
10               // 关闭除主窗体以外的其他窗体
11               if (form.Name != "Form_main")
12               {
13                     form.Close();
14               }
15               //MessageBox.Show(form.Name);
16             }
17         } 
2.实现子窗体加载方法来加载不同的界面,通过form参数加载指定的窗口 
 /// <summary>
      /// 子窗体加载
      /// </summary>
      /// <param name="form">子窗口对象</param>
      private void openPage(Form form)
      {
            CloseOtherForms();
            form.Dock = System.Windows.Forms.DockStyle.Fill;//设置Dock为Fill使子窗体占满splitContainer1.Panel2
            form.TopLevel = false;////设置为非顶级控件,否则无法添加
            form.Show();
            splitContainer1.Panel2.Controls.Clear();//清除splitContainer1.Panel2内容
            splitContainer1.Panel2.Controls.Add(form);//将frmHome添加到splitContainer1.Panel2中
      } 
3.实现对应按钮点击事件(其他按钮类似)
      /// <summary>
      /// 员工管理按钮事件
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
      private void btn_employeeMan_Click(object sender, EventArgs e)
      {
            Form_EmployeeMan form = new Form_EmployeeMan();
            openPage(form);
      }     
最终效果:

 
 
来源:https://www.cnblogs.com/xmit/p/18179640
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: C#winform实现通过点击Button来切换不同的界面