WinForm中DataGridView折叠控件【超好看】
![star](https://csdnimg.cn/release/downloadcmsfe/public/img/star.98a08eaa.png)
刚到一家新公司,领导下发任务要用cs系统做一个表格折叠显示,这真是把我难倒了,自己工作6年一直以来都是做BS的系统。这如果在BS里面那太简单了,JqGrid默认都自带,可是DataGridview不支持折叠啊。自己一点经验没有,怎么办呢?于是上网搜了相关视频,资料,开始学习起来。最后借鉴源码封了这么一个东西,发出来分享下,也能让自己加深印象。 首先不多说,上图。如果大家感谢还不错,请继续往下阅读: 大概的效果就是这样。 上代码。 1、首先重写DataGridview,代码如下: public class MasterControl : DataGridView { #regi 在WinForm应用中,开发人员经常需要处理复杂的用户界面需求,比如实现表格数据的折叠功能。在Web开发中,如BS架构(B/S,Browser/Server)系统,我们可以利用JavaScript库,如JqGrid,轻松实现这样的效果。然而,在Windows Forms(WinForm)环境中,原生的DataGridView控件并不直接支持折叠特性。这个问题描述了作者如何在面临类似挑战时,通过自定义控件的方式实现了在WinForm中的DataGridView折叠效果。 作者创建了一个名为`MasterControl`的类,它继承自`DataGridView`。这样做是为了能够扩展和修改默认的DataGridView控件的行为,以满足折叠功能的需求。在`MasterControl`类中,定义了一些字段,如`rowCurrent`用于存储当前展开的行索引,`rowDefaultHeight`和`rowExpandedHeight`分别表示默认行高和展开后的行高,`rowDividerMargin`等则用于控制行分隔符的位置和样式。 在构造函数中,作者提供了两种方式来初始化这个自定义的折叠控件。一种是通过传递`DataSet`对象和`controlType`枚举值,这样可以根据数据集中的关系自动构建层级结构。另一种方式是直接传入数据集合,以及层与层之间的主外键映射关系,这适用于没有数据关系或者需要手动指定关联的情况。 为了实现折叠效果,作者在`MasterControl`类中添加了一个名为`childView`的私有字段,这是一个`detailControl`类型的实例,用于存放子表格。当用户点击某一行时,`childView`会根据选定行的数据加载并显示子表格,从而实现折叠和展开的功能。 此外,作者可能还实现了事件处理程序来监听用户交互,如行点击事件,以便在用户点击时切换行的展开和折叠状态。这通常涉及计算和调整行的高度,以及更新`childView`的可见性。为了保持折叠状态,还需要在`rowCurrent`列表中管理已展开的行索引,确保在刷新或重新加载数据时能正确恢复这些状态。 这个例子展示了在WinForm中如何通过自定义控件和事件处理来扩展标准的.NET Framework组件,以实现更复杂的功能。虽然原始代码未给出完整实现,但可以推断出主要逻辑包括行高度的动态调整、子表格的加载与隐藏,以及状态管理等。这种自定义控件的方法对于那些需要在WinForm应用中实现类似折叠效果的开发者来说,是一个有价值的参考和学习资源。
![](https://csdnimg.cn/release/download_crawler_static/14877284/bg1.jpg)
![](https://csdnimg.cn/release/download_crawler_static/14877284/bg2.jpg)
剩余7页未读,继续阅读
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 6
- 资源: 932
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)
评论6