You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataGridView默认错误对话框异常:System.FormatException问题咨询

嘿,我之前也碰到过类似的DataGridView格式化异常问题,结合你的场景给你捋捋可能的原因和解决办法:

问题分析

你遇到的System.FormatException: Formated value of the cell has a wrong type,本质是单元格实际存储的数据类型,和列配置的格式化规则不兼容,结合你的双DGV场景,大概率是这几个原因:

  • DGV2的带状布局列(尤其是图片列)的类型配置和赋值不匹配
  • DGV1排序后,迭代处理时不小心修改了单元格值的类型
  • 列未显式指定ValueType,导致DataGridView自动推断类型出错
解决步骤

1. 检查列的格式化规则与数据类型对齐

逐个核对两个DGV的列配置:

  • 对于DGV1的常规数据列:如果设置了数值格式化(比如{0:N2}),确保绑定的是int/decimal等数值类型,不能是字符串或null(空值用DBNull.Value代替)
  • 对于DGV2的图片列:必须赋值Image对象,不能直接塞图片路径字符串或字节数组(如果是字节数组,要先转成Image再赋值)

2. 显式设置列的ValueType

不要依赖DataGridView自动推断类型,创建列时明确指定类型,避免隐性错误:

// DGV1的文件大小列(数值类型)
DataGridViewTextBoxColumn sizeCol = new DataGridViewTextBoxColumn();
sizeCol.Name = "FileSize";
sizeCol.ValueType = typeof(long);
sizeCol.DefaultCellStyle.Format = "N0"; // 格式化显示为整数
dgv1.Columns.Add(sizeCol);

// DGV2的图片列
DataGridViewImageColumn imgCol = new DataGridViewImageColumn();
imgCol.Name = "ModelPreview";
imgCol.ValueType = typeof(Image);
dgv2.Columns.Add(imgCol);

3. 定位具体出错的单元格

在迭代处理的代码里加局部捕获,精准找到问题单元格:

foreach (DataGridViewRow row in dgv1.Rows)
{
    try
    {
        // 你的迭代处理逻辑,比如给DGV2赋值图片
        string filePath = row.Cells["FilePath"].Value.ToString();
        dgv2.Columns[row.Index].Cells[0].Value = LoadCADImage(filePath);
    }
    catch (FormatException ex)
    {
        // 输出出错位置,方便排查
        Console.WriteLine($"出错行:{row.Index},列:{row.Cells["FilePath"].Name},错误:{ex.Message}");
    }
}

4. 基于原始数据源处理,而非DGV行

排序后DGV的Rows是视图层面的排序结果,直接遍历可能引发类型转换问题,建议直接操作绑定的原始数据源(比如DataTable):

// 假设DGV1绑定的是DataTable
DataTable dt = (DataTable)dgv1.DataSource;
// 先排序数据源
dt.DefaultView.Sort = "FileName ASC";
// 遍历排序后的数据源
foreach (DataRowView rowView in dt.DefaultView)
{
    DataRow row = rowView.Row;
    // 处理逻辑...
}
总结

这个异常90%都是「类型不兼容」导致的,先从列的ValueType和格式化规则入手检查,再通过局部捕获定位具体单元格,基本能快速解决问题。

内容的提问来源于stack exchange,提问作者Check Master

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:25:25