ToB企服应用市场:ToB评测及商务社交产业平台
标题:
C#winform实现通过点击Button来切换差别的界面
[打印本页]
作者:
王海鱼
时间:
2024-5-19 11:22
标题:
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);
}
复制代码
终极结果:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4