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

关于DataGridView的使用注意事项

写在前面

在日常使用DataGridView时,大多数情况下用起来都特别简单,但偶尔遇到一些坑时也会折磨人很久。现在编写此篇博客, 以记录在平时工作时遇到的一些坑。

场景1:DataGridView的CellFormatting事件

因为业务需要,我的DataGridView绑定的数据源中,有个列不在DataSource绑定的对象里,这时就需要增加自定义列,同时也需要自己编写展示自定义列的数据的处理,于是我就对这个列增加了CellFormatting事件。最初的时候,我编写的代码如下,结果发现我原本DataSource绑定的对象中的任意一个列,一旦有null值,就会报DataFormatted错误,我百思不得其解,最后才发现,我把这个e.FormattingApplied写在了CellFormatting事件方法的最外面,如下代码所示:

// 错误示例private void DGV_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{if (e.ColumnIndex == dgv.Columns["attr1"].Index){// 业务逻辑if(xxx){e.Value = xxx.ToString();}else{e.Value = string.Empty;}}e.FormattingApplied = true;    // 致命错误
}

正确的应该是这么写:

// 改正之后private void DGV_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{if (e.ColumnIndex == dgv.Columns["attr1"].Index){// 业务逻辑if(xxx){e.Value = xxx.ToString();}else{e.Value = string.Empty;}e.FormattingApplied = true;    // 此行代码如果放至最外层,会对DataGridView的每一个列都进行格式化}}

原因:把e.FormattingApplied=true写在最外层,就会导致数据源所有的列都会生效,这时候一旦你数据源中的某个列有null值,就会报异常。而放在if内部,则只会对这单个列生效。(还是不能过于省代码)

其他场景等后续更新


http://www.mrgr.cn/news/81628.html

相关文章:

  • 【Unity-Animator】通过 StateMachineBehaviour 实现回调
  • Java设计模式——单例模式(特性、各种实现、懒汉式、饿汉式、内部类实现、枚举方式、双重校验+锁)
  • qt QPainter setViewport setWindow viewport window
  • Linux Top 命令 load average 指标解读
  • springboot 加载本地jar到maven
  • Video VQGAN Model源码解析(VideoVAE+、VidTok 、OmniTokenizer、MAGE、MaskVIT、MaskGiT )
  • 【漏洞复现】BIG-IP Next Central Manager OData 注入漏洞(CVE-2024-21793)
  • uniapp 文本转语音
  • 机器学习之KNN算法预测数据和数据可视化
  • 爆改RagFlow
  • WPF 绘制过顶点的圆滑曲线(样条,贝塞尔)
  • pg数据库主备库切换
  • Vue.use()和Vue.component()
  • 文件路径与Resource接口详解
  • 算法题(16):原地移除元素
  • 学习笔记 --C#基础其他知识点(持续更新)
  • 【Lua之·Lua与C/C++交互·Lua CAPI访问栈操作】
  • jetson Orin nx + yolov8 TensorRT 加速量化 环境配置
  • 《Vue3 二》Vue 的模板语法
  • 精准识别花生豆:基于EfficientNetB0的深度学习检测与分类项目
  • IS-IS协议 配置实验
  • 音视频入门基础:MPEG2-TS专题(22)——FFmpeg源码中,获取TS流的音频信息的实现
  • 六大基础深度神经网络之CNN
  • 【Compose multiplatform教程09】【组件】Image组件
  • 3. Kafka入门—安装与基本命令
  • Vue2:v-for创建echart图表时不能使用动态ref,要使用动态id