首页 > 编程语言 >C#winform实现通过点击Button来切换不同的界面

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

时间:2024-05-08 15:33:52浏览次数:14  
标签:控件 界面 form C# Button SplitContainer 拆分 窗口 winform

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

实现目标:点击左边菜单栏里面的Button实现右边区域切换不同界面。

步骤:

1.界面布局

由于实现目标需要用到容器控件,所以需要选择合适的容器控件来进行左右区域布局。常用的容器控件有:PanelFlowLayoutPanelGroupBoxTabControlSplitContainerTableLayoutPanelToolStripContainer

  • 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);
        }    

 

最终效果:

 

 

标签:控件,界面,form,C#,Button,SplitContainer,拆分,窗口,winform
From: https://www.cnblogs.com/xmit/p/18179640

相关文章

  • windows 误删除\AppData\Local\文件夹的恢复
    背景:清除Temp文件夹时,路径复制错误,少复制了Temp,导致删除了文件夹 C:\Users\username\AppData\Local\异常现象:估计删除Local文件夹后,出现的问题应该会比较多,但我目前实际上只遇到了一个问题,其它的问题等遇到再说单按win键无响应,无法呼出开始菜单栏,这导致如果没有记住应用的安装......
  • binaascii:A Python 在二进制和 ASCII 之间转换
    binaascii是一个用于在二进制和ASCII之间转换的模块。b2a_base64是binaascii模块中的一种方法,它将base64数据转换为二进制数据。下面是这个方法的一个例子:importbase64importbinasciimsg="Tandrew"encoded=msg.encode('ascii')base64_msg=base64.b64encode......
  • calendar:Python日历的处理与生成
    前言calendar库让你可以输出日历,它还提供了其它与日历相关的实用函数。本篇,就将详细讲解calendar库的使用规则。prmonth()与TextCalendar()prmonth()是一个简单的函数,可以生成月的格式文本输出。具体用法如下所示:importcalendarc=calendar.TextCalendar(calendar.MONDAY)......
  • Rich:终端打印富文本
    Rich——一个让程序更高级的Python库在这个多彩缤纷的数字时代,命令行界面似乎太过单调乏味。想象一下,如果你的终端输出能够像现代网页一样丰富多彩,是不是会带给你更愉快的开发体验?这时,一个强大的库——Rich——悄然走进了你的视野。它让颜色和样式的添加变得异常简单,不仅......
  • ChatterBot:构建智能对话系统
    Github地址:https://github.com/gunthercox/ChatterBot在当今数字化时代,智能对话机器人成为了各行业的热门话题之一。PythonChatterBot库作为一款开源的对话机器人库,为开发者提供了构建智能对话系统的强大工具。本文将介绍如何安装ChatterBot库,以及它的特性、基本功能、高级功......
  • struct:Python二进制数据结构
    在C/C++语言中,struct被称为结构体。而在Python中,struct是一个专门的库,用于处理字节串与原生Python数据结构类型之间的转换。本篇,将详细介绍二进制数据结构struct的使用方式。函数与Struct类struct库包含了一组处理结构值得模块级函数,以及一个Struct类。格式指示符将由字符串格......
  • R 语言 scRNA学习
    scRNA批量导入从数据库中下载的scRNA数据点击查看代码library(Seurat)#从数据库里下载并解压的文件路径path<-'./GSE221575_RAW/'fs=list.files(path,pattern='^GSM')samples<-substr(fs,1,10)lapply(unique(samples),function(x){y=fs[grepl(x,fs)]f......
  • 批量修改asp.net core 项目的解决方案的命名空间
    单个命名空间重命名:打开任何使用旧命名空间(例如:“OrchardCore”)的文件。右键点击命名空间名称,选择“重构”然后选择“重命名”。输入新的命名空间名称(例如:“SuperCore”),确保选中“预览更改”,然后点击“应用”。VisualStudio将显示所有受影响的引用,并让你确认修改。全局搜索......
  • 读取PDF文件,并写入excel表
    importrefromopenpyxlimportWorkbookpdf_name='D:/beifangzhongzhi/zhongye/百保科技/疾病/疾病.pdf'importPyPDF2defget_text(pdf_name):withopen(pdf_name,'rb')asfile:reader=PyPDF2.PdfReader(file)num_pages=......
  • Python解释器和Pycharm的安装
    Python解释器和Pycharm的安装【一】Python解释器安裝(windows)【1】进入Python官网https://www.python.org【2】选择Windows系统【3】选择解释器版本3.10.11【4】安装解释器(1)双击安装程序选择最下面的选项(2)选择安装包管理工具全部勾上(3)选择安装位置全部勾......