C

雅轩聊科技 2024-07-23 21:40:47

哈喽,你好啊,我是雷工!

今天继续练习人员管理系统的实现,该篇记录部分已实现功能的细节优化和如何在主窗体打开子窗体的相关记录;

以下为练习记录。

01 SplitContainer

为了实现左侧按钮区域的可拖动宽度,添加了SplitContainer拆分器控件,

该控件有Panel1Collapsed属性:确定Panel1是否折叠;

利用该属性应该可以实现左侧按钮区域的显示和隐藏,

效果如下:

02 效果优化

2.1、登录界面

优化按钮的指示效果,当鼠标箭头移动到按钮上时,显示手的形状;

将按钮的Cursor属性设置为:Hand;

效果演示:

2.2、主界面

同样的方式,将主界面按钮的Cursor属性设置为:Hand;

03 嵌入子窗体

在主窗体中嵌入子窗体,当点击主窗体按钮区域的对应功能按钮时,在主区域打开对应的子窗体;

3.1、效果演示

点击【添加人员】按钮,在右侧区域打开添加人员子窗体;

3.2、实现思路

①首先检查SplitContainer1的Panel2部分是否有窗体打开,有则将其关闭;

②设置子窗体的相关属性,然后在指定的容器内打开;

③因为每个子窗体的打开都需要此过程,将共有代码提炼成方法;

④当点击对应的功能时,通过调用方法打开对应的子窗体;

3.3、实现代码

下面以添加人员按钮为例展示添加子窗体的过程;

①关闭子窗体

private void CloseForm(){ //判断panel2中是否已经存在窗体,存在则关闭 foreach (Control item in this.splitContainer1.Panel2.Controls) {if (item is Form){ Form objControl = (Form)item; objControl.Close();} }}

②打开子窗体

private void OpenForm(Form objForm){ CloseForm(); objForm.TopLevel = false;//将窗体设置成非顶级控件 objForm.FormBorderStyle = FormBorderStyle.None;//去掉窗体边框 objForm.Parent = this.splitContainer1.Panel2;//指定子窗体的显示容器 objForm.Dock = DockStyle.Fill;//设置子窗体随着容器发消自动调整窗体大小 objForm.Show();}

③按钮事件

点击【添加人员】按钮,调用打开子窗体的方法

private void lblAddPeo_Click(object sender, EventArgs e){ FrmAddPeople objForm = new FrmAddPeople(); OpenForm(objForm);}

04 后记

以上是关于效果优化、在主窗体打开子窗体的实现记录;

有更好的实现方法欢迎大家留言,更多相关话题也可以在交流群探讨。

0 阅读:0

雅轩聊科技

简介:感谢大家的关注