WinForm中DataGridView折叠控件【超好看】

刚到一家新公司,领导下发任务要用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应用中实现类似折叠效果的开发者来说,是一个有价值的参考和学习资源。


剩余7页未读,继续阅读


















- 粉丝: 6
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 操作系统课件设备管理教案资料.ppt
- 电子商务教案(1-5).doc
- 朗读网站制作方案.docx
- 大连市政集团计算机网络系统设计与建设的开题报告.docx
- 第09章数据通信规程知识讲解.ppt
- 电子商务运营模式分析(2).doc
- ASP.NET4.0网站开发实例教程教材配套资源ppt课件(完整版).zip
- webService网络服务调用总结.docx
- 教育网站建设方案(1).doc
- 基于计算机视觉的内河船舶身份识别研究的开题报告.docx
- MySQL初级考试试题及答案.doc
- 福建师范大学2021年9月《电子商务理论与实践》作业考核试题及答案参考19.docx
- 浅谈网络资源在高职计算机教学中的应用(1).docx
- 东北农业大学2021年9月《面向对象程序设计》作业考核试题及答案参考12.docx
- 浅析城市建设档案信息化建设工作的开展.docx
- 学校信息化管理制度和管理办法(1).doc



评论6