液体吸收测试报告 - 测试验证说明 ===================================== 修正后的实现要点: ================== 1. 表头结构 - 第一行:序号(合并)、试样1、试样2、试样3、试样4、试样5 - 第二行:试样次数 1、2、3 2. 单元格颜色和可编辑性 ┌─────────────────────┬──────────┬──────────┬──────────┐ │ 行名称 │ 次数1 │ 次数2 │ 次数3 │ ├─────────────────────┼──────────┼──────────┼──────────┤ │ 吸水时间(s) │ 黄色 │ 空白 │ 空白 │ │ 吸芯高度(mm) │ 空白 │ 白色 │ 空白 │ │ 芯吸速率(mm/min) │ 空白 │ 空白 │ 黄色 │ │ 平均芯吸速率 │ 空白 │ 空白 │ 黄色 │ │ 标准偏差 │ 空白 │ 空白 │ 黄色 │ │ 互检/审核 │ 空白 │ 白色 │ 空白 │ └─────────────────────┴──────────┴──────────┴──────────┘ 3. 测试步骤 步骤1:启动程序 - 应该看到6行数据 - 所有单元格初始值为0或空白 步骤2:点击"模拟数据"按钮 - 吸水时间行:试样次数1列应显示黄色背景的数值(30-34之间) - 吸水时间行:试样次数2和3列应为空白 - 吸芯高度行:试样次数2列应显示白色背景的数值(50-70之间) - 吸芯高度行:试样次数1和3列应为空白 - 芯吸速率行:试样次数3列应显示黄色背景的计算结果 - 芯吸速率行:试样次数1和2列应为空白 - 平均芯吸速率行:试样次数3列应显示黄色背景的平均值 - 标准偏差行:试样次数3列应显示黄色背景的标准偏差值 - 互检/审核行:所有列应为空白(可在试样次数2列手动输入) 步骤3:手动编辑测试 - 尝试点击吸水时间行的试样次数1列:应该是只读,不能编辑 - 尝试点击吸芯高度行的试样次数2列:应该可以编辑 - 修改吸芯高度的值后,芯吸速率应自动重新计算 - 尝试点击芯吸速率行的试样次数3列:应该是只读,不能编辑 步骤4:导出Excel测试 - 点击"导出"按钮 - 选择保存位置 - 打开导出的Excel文件 - 验证表头结构:第一行显示"试样1-5",第二行显示"1、2、3" - 验证颜色:试样次数1和3列应为黄色背景 - 验证数据:只有应该有数据的单元格才显示数据,其他为空白 4. 预期结果 正确的显示效果应该是: ┌────────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ │ 序号 │试样1 │试样2 │试样3 │试样4 │试样5 │ │ ├─┬─┬─┼─┬─┬─┼─┬─┬─┼─┬─┬─┼─┬─┬─┤ │ │1│2│3│1│2│3│1│2│3│1│2│3│1│2│3│ ├────────┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤ │吸水时间│🟨│ │ │🟨│ │ │🟨│ │ │🟨│ │ │🟨│ │ │ ├────────┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤ │吸芯高度│ │⬜│ │ │⬜│ │ │⬜│ │ │⬜│ │ │⬜│ │ ├────────┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤ │芯吸速率│ │ │🟨│ │ │🟨│ │ │🟨│ │ │🟨│ │ │🟨│ ├────────┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤ │平均速率│ │ │🟨│ │ │🟨│ │ │🟨│ │ │🟨│ │ │🟨│ ├────────┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤ │标准偏差│ │ │🟨│ │ │🟨│ │ │🟨│ │ │🟨│ │ │🟨│ ├────────┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤ │互检审核│ │⬜│ │ │⬜│ │ │⬜│ │ │⬜│ │ │⬜│ │ └────────┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘ 图例: 🟨 = 黄色背景,有数据,只读 ⬜ = 白色背景,有数据或可输入,可编辑 空白 = 白色背景,无数据,只读 5. 常见问题排查 问题1:所有单元格都显示0.00 原因:数据初始化为0,但没有正确判断空白单元格 解决:检查 ShouldBeEmpty() 方法是否正确实现 问题2:空白单元格显示黄色背景 原因:CellPainting 事件没有正确处理 解决:检查 DataGridView1_CellPainting 方法 问题3:应该可编辑的单元格不能编辑 原因:列的 ReadOnly 属性设置错误 解决:检查 InitializeDataGridView() 中的列定义 问题4:修改数据后没有重新计算 原因:CellValueChanged 事件没有触发 解决:检查事件是否正确注册 6. 代码关键点 - InitializeDataGridView():定义列结构和样式 - ShouldBeEmpty():判断哪些单元格应该为空白 - DataGridView1_CellFormatting():格式化显示,将0值的空白单元格显示为空字符串 - DataGridView1_CellPainting():设置空白单元格的背景色为白色 - DataGridView1_CellValueChanged():监听数据变化,触发重新计算