当前位置: 首页 > news >正文

DevExpress WinForms中文教程:Grid View - 如何实现单元格合并?

DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

DevExpress WinForms网格控件可以垂直合并单元格,从而为具有许多重复值的视图提供更清晰的数据表示。在本教程中,您将学习如何为整个视图或单个列启用单元格合并功能,还将看到如何更改确定是否合并两个相邻单元格的算法。

DevExpress新旧版本帮助文档获取可点击这篇文章查看——>《界面控件DevExpress v26.1帮助文档大全(CHM版本)》

起点

从一个以常规格式显示数据的网格控件开始。

启用单元格合并

在设计时,访问视图的属性,然后展开GridView.OptionsView并启用GridOptionsView.AllowCellMerge选项。

由于网格没有为单元格合并提供默认UI,因此可以创建一个按钮处理程序,在运行时切换相同的选项。

C#

private barButtonItem1_ItemClick(object sender, ItemClickEventArgs e) { gridView1.OptionsView.AllowCellMerge = !gridView1.OptionsView.AllowCellMerge; }

运行应用程序,注意具有相同值的列单元格被合并,单击该按钮可查看启用或禁用单元格合并时布局的变化情况。

请注意,可以通过对具有重复值的列进行排序来启用更具可读性的视图。这将相同的值放在一起,因此视图将更大的数据块连接到合并的单元格中。

禁用单个列的单元格合并

现在选择Priority列来访问它的属性,展开GridColumn.OptionsColumn,然后禁用OptionsColumn.AllowMerge选项。

运行应用程序,查看优先级单元格不再合并,而其他列仍然启用了该特性。

实现自定义单元格合并算法

现在您可以注意到,Created By列中的电子邮件地址具有重复的域。您可以更改单元格合并算法,以便将具有相同域的所有单元格合并在一起。

选择网格视图并访问其事件来编写ColumnView.CustomColumnDisplayText处理程序,代码检查是否正在处理Created By列。单元格显示文本(或电子邮件地址)从CustomColumnDisplayTextEventArgs.DisplayText参数获得,处理程序然后检索带有域名的子字符串,并将其分配回CustomColumnDisplayTextEventArgs.DisplayText。

C#

private void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) { if (e.Column == colCreatorID) { string email = e.DisplayText; string domain = email.Substring(email.IndexOf('@') + 1); e.DisplayText = domain; } }

运行应用程序,您将看到域名显示在单元格中,但没有发生合并,因为该特性仍然依赖于单元格值而不是显示文本。

为了解决这个问题,编写一个GridView.CellMerge事件处理程序。首先,检查正在处理的列是否正确。然后,获取正在比较的两个单元格的显示文本。最后,指示如果单元格的显示文本匹配,则合并单元格。将CellMergeEventArgs.Handled参数设置为true,以覆盖网格对该列的默认处理。

C#

using DevExpress.XtraGrid.Views.Grid; // ... private void gridView1_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e) { GridView view = sender as GridView; if(view == null) return; if (e.Column == colCreatorID) { string text1 = view.GetRowCellDisplayText(e.RowHandle1, colCreatorID); string text2 = view.GetRowCellDisplayText(e.RowHandle2, colCreatorID); e.Merge = (text1 == text2); e.Handled = true; } }

现在运行应用程序,查看是否正在根据域信息合并单元格。

http://www.jsqmd.com/news/1120735/

相关文章:

  • 4-20mA电流环原理与工业自动化应用解析
  • Kali Linux实战:基于DVWA靶场深入解析一句话木马攻防原理
  • Selenium自动化测试:浏览器驱动路径管理的四种策略与最佳实践
  • AI时代开发者如何构建护城河:从工具崇拜到问题定义与流程重塑
  • 如何高效使用Mole AI清理工具:终极Mac系统优化指南
  • Elm-platform安装教程:Windows、macOS、Linux三大平台详细步骤
  • 界面控件DevExpress WinForms v24.2新版亮点:支持TimeOnly
  • RESTMock vs 其他Mock工具:为什么它是Android Instrumentation测试的最佳选择
  • Redis 五大数据结构及使用场景
  • 计算机毕业设计之基于YOLOv8的车辆检测与识别系统
  • PAT 乙级题目讲解:1005 《继续(3n+1)猜想》
  • ReactList 未来路线图:无限滚动组件的演进方向和技术趋势
  • 计算机毕业设计之基于springboot的悦尚宾馆客房管理系统
  • MySQL 8 设置允许远程连接(Windows环境)
  • delphi12 sqlserver 客户-服务简单连接设置
  • Agent Skills架构深度解析:渐进式上下文加载的3层策略
  • 【YOLOv10多模态融合改进】| TGRS 2025 HFFE分层特征融合编码器 双模态注意力加权 + 跨尺度对齐融合,强化弱小目标多模态特征互补
  • 从Q2_K到Q6_K:Qwable-9B-Claude-Fable-5-StraTA-i1-GGUF各版本性能测试报告
  • 5大硬盘清理痛点,Krokiet如何帮你一次性解决?
  • CANN/GE LLM-DataDist CacheDesc API文档
  • Apache Maven 多版本发布:管理项目构建,快速上手有门道
  • PAT 乙级题目讲解:1006《换个格式输出整数》
  • RobustBench核心功能深度解析:从模型库到排行榜的完整工作流
  • 10分钟掌握Touch WX单文件开发模式,告别传统四文件烦恼
  • UniApp相关知识点整理
  • PAT 乙级题目讲解:1017《A除以B》
  • Mermaid Live Editor:5分钟用代码画出专业图表的终极指南
  • Mermaid Live Editor:免费在线图表编辑器的终极完整指南
  • Elm-platform开发服务器详解:elm-reactor的10个实用功能
  • 空洞骑士模组管理器Scarab:终极安装配置指南