174 lines
6.0 KiB
Plaintext
174 lines
6.0 KiB
Plaintext
快速测试手动输入功能
|
||
======================
|
||
|
||
## 5步快速测试
|
||
|
||
### 步骤1:启动程序
|
||
- 运行程序
|
||
- 看到6行数据的表格
|
||
|
||
### 步骤2:生成模拟数据
|
||
- 点击"模拟数据"按钮
|
||
- 吸水时间行会显示数据(试样次数1列)
|
||
- 吸芯高度行会显示数据(所有3列)
|
||
|
||
### 步骤3:输入吸芯高度(试样次数1列)
|
||
- 找到"吸芯高度(mm)"行
|
||
- 双击"试样1"下的"1"列(第一列)
|
||
- 输入:60.50
|
||
- 按Enter键
|
||
|
||
### 步骤4:输入吸芯高度(试样次数2列)
|
||
- 找到"吸芯高度(mm)"行
|
||
- 双击"试样2"下的"2"列(中间列)
|
||
- 输入:65.75
|
||
- 按Enter键
|
||
|
||
### 步骤5:输入吸芯高度(试样次数3列)
|
||
- 找到"吸芯高度(mm)"行
|
||
- 双击"试样3"下的"3"列(第三列)
|
||
- 输入:70.25
|
||
- 按Enter键
|
||
|
||
### 步骤6:查看自动计算
|
||
- 查看"芯吸速率"行的"试样1、2、3"下的"3"列
|
||
- 应该显示计算结果
|
||
- 查看"平均芯吸速率"行
|
||
- 查看"标准偏差"行
|
||
|
||
## 预期结果
|
||
|
||
```
|
||
┌─────────────┬────┬────┬────┬────┬────┬────┐
|
||
│ 序号 │试样1│试样2│试样3│试样4│试样5│
|
||
│ ├─┬─┬─┼─┬─┬─┼─┬─┬─┼─┬─┬─┼─┬─┬─┤
|
||
│ │1│2│3│1│2│3│1│2│3│1│2│3│1│2│3│
|
||
├─────────────┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|
||
│吸水时间(s) │30│ │ │31│ │ │32│ │ │33│ │ │34│ │ │
|
||
├─────────────┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|
||
│吸芯高度(mm) │60│65│70│60│65│70│60│65│70│60│65│70│60│65│70│
|
||
│ │↑│↑│↑│↑│↑│↑│↑│↑│↑│↑│↑│↑│↑│↑│↑│
|
||
│ │可│可│可│可│可│可│可│可│可│可│可│可│可│可│可│
|
||
│ │编│编│编│编│编│编│编│编│编│编│编│编│编│编│编│
|
||
│ │辑│辑│辑│辑│辑│辑│辑│辑│辑│辑│辑│辑│辑│辑│辑│
|
||
├─────────────┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|
||
│芯吸速率 │ │ │120│ │126│ │131│ │136│ │141│
|
||
│(mm/min) │ │ │↑ │ │ │↑ │ │ │↑ │ │ │↑ │ │ │↑ │
|
||
│ │ │ │自│ │ │自│ │ │自│ │ │自│ │ │自│
|
||
│ │ │ │动│ │ │动│ │ │动│ │ │动│ │ │动│
|
||
│ │ │ │计│ │ │计│ │ │计│ │ │计│ │ │计│
|
||
│ │ │ │算│ │ │算│ │ │算│ │ │算│ │ │算│
|
||
└─────────────┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
|
||
```
|
||
|
||
## 检查点
|
||
|
||
✅ 可以双击"吸芯高度"行的试样次数1列
|
||
✅ 可以双击"吸芯高度"行的试样次数2列
|
||
✅ 可以双击"吸芯高度"行的试样次数3列
|
||
✅ 可以输入数字
|
||
✅ 按Enter后数字正确显示
|
||
✅ 芯吸速率自动计算(使用平均吸芯高度)
|
||
✅ 平均值自动更新
|
||
✅ 标准偏差自动更新
|
||
✅ 可以继续编辑其他试样
|
||
✅ 隔行变色效果正常
|
||
✅ 其他行不可编辑
|
||
|
||
## 如果无法编辑
|
||
|
||
### 检查1:是否选对了行
|
||
- 必须是"吸芯高度(mm)"行
|
||
- 不是其他行(吸水时间、芯吸速率等都不可编辑)
|
||
|
||
### 检查2:是否双击了
|
||
- 需要双击单元格进入编辑模式
|
||
- 或者单击后按F2键
|
||
|
||
### 检查3:CellBeginEdit事件
|
||
- 确认CellBeginEdit事件已注册
|
||
- 确认只有吸芯高度行允许编辑
|
||
|
||
## 代码检查
|
||
|
||
如果功能不正常,检查以下代码:
|
||
|
||
### 1. 列定义
|
||
```csharp
|
||
// 所有列都应该设置为可编辑
|
||
dataGridView1.Columns.Add(new DataGridViewTextBoxColumn
|
||
{
|
||
Name = $"试样{i}_1",
|
||
ReadOnly = false, // ← 必须是false
|
||
...
|
||
});
|
||
```
|
||
|
||
### 2. CellBeginEdit事件
|
||
```csharp
|
||
// 动态控制哪些单元格可以编辑
|
||
private void DataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
|
||
{
|
||
if (e.RowIndex >= 0 && e.ColumnIndex > 0)
|
||
{
|
||
string rowName = dataGridView1.Rows[e.RowIndex].Cells["序号"].Value?.ToString() ?? "";
|
||
|
||
// 吸芯高度(mm)行 - 所有列都可以编辑
|
||
if (rowName == "吸芯高度(mm)")
|
||
{
|
||
return; // 允许编辑
|
||
}
|
||
|
||
// 其他行 - 取消编辑
|
||
e.Cancel = true;
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3. CellValueChanged事件
|
||
```csharp
|
||
// 吸芯高度行的任何修改都触发重新计算
|
||
private void DataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
|
||
{
|
||
if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
|
||
{
|
||
string rowName = dataGridView1.Rows[e.RowIndex].Cells["序号"].Value?.ToString() ?? "";
|
||
|
||
if (rowName == "吸芯高度(mm)")
|
||
{
|
||
RecalculateRow(e.RowIndex);
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
## 调试建议
|
||
|
||
如果遇到问题,可以:
|
||
|
||
1. 在CellBeginEdit事件中添加断点
|
||
2. 检查rowName是否正确识别为"吸芯高度(mm)"
|
||
3. 检查e.Cancel是否正确设置
|
||
4. 在CellValueChanged事件中添加断点
|
||
5. 检查计算逻辑是否正确执行
|
||
|
||
## 成功标志
|
||
|
||
当你看到以下情况时,说明功能正常:
|
||
|
||
1. ✅ 双击吸芯高度行的任意列后出现光标
|
||
2. ✅ 可以输入数字
|
||
3. ✅ 按Enter后数字保留
|
||
4. ✅ 芯吸速率列显示计算结果
|
||
5. ✅ 平均值和标准偏差更新
|
||
6. ✅ 其他行无法编辑
|
||
7. ✅ 可以导出到Excel
|
||
8. ✅ Excel中数据正确显示
|
||
|
||
## 重要提示
|
||
|
||
**新功能**:吸芯高度行的所有3列(试样次数1、2、3)都可以编辑!
|
||
- 这样可以更灵活地输入数据
|
||
- 系统会自动计算平均值用于芯吸速率计算
|
||
- 其他行保持只读,不可编辑
|