From 36f9b3b965119f6571997d37920093a66942fb05 Mon Sep 17 00:00:00 2001 From: "GukSang.Jin" Date: Tue, 6 Jan 2026 14:23:40 +0800 Subject: [PATCH] 202601061423 --- WindowsFormsApp6/Form3.cs | 14 ++--- WindowsFormsApp6/MainForm.cs | 117 +++++++++++++---------------------- 2 files changed, 51 insertions(+), 80 deletions(-) diff --git a/WindowsFormsApp6/Form3.cs b/WindowsFormsApp6/Form3.cs index 8e0b49f..9ab5622 100644 --- a/WindowsFormsApp6/Form3.cs +++ b/WindowsFormsApp6/Form3.cs @@ -920,7 +920,7 @@ namespace WindowsFormsApp6 /// /// 计算标准偏差 /// 计算方式:基于每个试样的平均芯吸速率计算标准偏差(组间标准偏差) - /// 结果:只有一个标准偏差值,合并显示在第1列 + /// 结果:只有一个标准偏差值,只在试样1的第1列显示 /// /// 说明: /// - 每5个试样为一组,计算该组的标准偏差 @@ -938,9 +938,9 @@ namespace WindowsFormsApp6 // 清空标准偏差行的所有数据 for (int i = 1; i <= currentSampleCount; i++) { - stdRow[$"试样{i}_1"] = 0.0; - stdRow[$"试样{i}_2"] = 0.0; - stdRow[$"试样{i}_3"] = 0.0; + stdRow[$"试样{i}_1"] = DBNull.Value; + stdRow[$"试样{i}_2"] = DBNull.Value; + stdRow[$"试样{i}_3"] = DBNull.Value; } // 计算每组(5个试样)的标准偏差 @@ -982,7 +982,7 @@ namespace WindowsFormsApp6 stdDev = Math.Sqrt(sumOfSquares / (groupAverages.Count - 1)); } - // 只在该组第1个试样的第1列显示标准偏差(合并显示效果) + // 只在该组第1个试样的第1列显示标准偏差,其他列保持DBNull stdRow[$"试样{startSample}_1"] = Math.Round(stdDev, 2); } } @@ -992,7 +992,7 @@ namespace WindowsFormsApp6 // 清空所有行的标准偏差列 foreach (DataRow row in sampleDataTable.Rows) { - row[ROW_STD_DEVIATION] = 0.0; + row[ROW_STD_DEVIATION] = DBNull.Value; } // 计算每组(5个试样)的标准偏差 @@ -1037,7 +1037,7 @@ namespace WindowsFormsApp6 stdDev = Math.Sqrt(sumOfSquares / (groupAverages.Count - 1)); } - // 只在该组第1个试样的第1次测试行显示标准偏差(合并显示效果) + // 只在该组第1个试样的第1次测试行显示标准偏差,其他行保持DBNull int targetRowIndex = (startSample - 1) * 3; // 第1次测试的行索引 if (targetRowIndex < sampleDataTable.Rows.Count) { diff --git a/WindowsFormsApp6/MainForm.cs b/WindowsFormsApp6/MainForm.cs index 2f2a20c..e1b25d1 100644 --- a/WindowsFormsApp6/MainForm.cs +++ b/WindowsFormsApp6/MainForm.cs @@ -455,28 +455,20 @@ namespace WindowsFormsApp6 DataRow avgRow = dataTable.NewRow(); avgRow["序号"] = $"平均时间(s) 试样{startSample}-{endSample}"; - // 将平均值显示在该组的所有试样列(合并显示效果) - for (int i = startSample; i <= endSample; i++) + // 只在该组第一个试样列显示平均值,其他列设置为DBNull + for (int i = 1; i <= currentSampleCount; i++) { if (dataTable.Columns.Contains($"试样{i}")) { - avgRow[$"试样{i}"] = groupAvg; - } - } - - // 其他列设置为空 - for (int i = 1; i < startSample; i++) - { - if (dataTable.Columns.Contains($"试样{i}")) - { - avgRow[$"试样{i}"] = DBNull.Value; - } - } - for (int i = endSample + 1; i <= currentSampleCount; i++) - { - if (dataTable.Columns.Contains($"试样{i}")) - { - avgRow[$"试样{i}"] = DBNull.Value; + // 只在该组第一个试样列显示平均值 + if (i == startSample) + { + avgRow[$"试样{i}"] = groupAvg; + } + else + { + avgRow[$"试样{i}"] = DBNull.Value; + } } } @@ -754,27 +746,20 @@ namespace WindowsFormsApp6 avgAbsorption = 0; } - // 将平均值显示在该组的所有试样列(合并显示效果) - for (int i = startSample; i <= endSample; i++) + // 只在该组第一个试样列显示平均值,其他列设置为DBNull + for (int i = 1; i <= currentSampleCount; i++) { if (dataTable.Columns.Contains($"试样{i}")) { - avgRow[$"试样{i}"] = avgAbsorption; - } - } - // 其他列设置为空 - for (int i = 1; i < startSample; i++) - { - if (dataTable.Columns.Contains($"试样{i}")) - { - avgRow[$"试样{i}"] = DBNull.Value; - } - } - for (int i = endSample + 1; i <= currentSampleCount; i++) - { - if (dataTable.Columns.Contains($"试样{i}")) - { - avgRow[$"试样{i}"] = DBNull.Value; + // 只在该组第一个试样列显示平均值 + if (i == startSample) + { + avgRow[$"试样{i}"] = avgAbsorption; + } + else + { + avgRow[$"试样{i}"] = DBNull.Value; + } } } dataTable.Rows.Add(avgRow); @@ -790,27 +775,20 @@ namespace WindowsFormsApp6 maxAbsorption = 0; } - // 将最大值显示在该组的所有试样列(合并显示效果) - for (int i = startSample; i <= endSample; i++) + // 只在该组第一个试样列显示最大值,其他列设置为DBNull + for (int i = 1; i <= currentSampleCount; i++) { if (dataTable.Columns.Contains($"试样{i}")) { - maxRow[$"试样{i}"] = maxAbsorption; - } - } - // 其他列设置为空 - for (int i = 1; i < startSample; i++) - { - if (dataTable.Columns.Contains($"试样{i}")) - { - maxRow[$"试样{i}"] = DBNull.Value; - } - } - for (int i = endSample + 1; i <= currentSampleCount; i++) - { - if (dataTable.Columns.Contains($"试样{i}")) - { - maxRow[$"试样{i}"] = DBNull.Value; + // 只在该组第一个试样列显示最大值 + if (i == startSample) + { + maxRow[$"试样{i}"] = maxAbsorption; + } + else + { + maxRow[$"试样{i}"] = DBNull.Value; + } } } dataTable.Rows.Add(maxRow); @@ -826,27 +804,20 @@ namespace WindowsFormsApp6 stdDev = 0; } - // 将标准偏差显示在该组的所有试样列(合并显示效果) - for (int i = startSample; i <= endSample; i++) + // 只在该组第一个试样列显示标准偏差,其他列设置为DBNull + for (int i = 1; i <= currentSampleCount; i++) { if (dataTable.Columns.Contains($"试样{i}")) { - stdDevRow[$"试样{i}"] = stdDev; - } - } - // 其他列设置为空 - for (int i = 1; i < startSample; i++) - { - if (dataTable.Columns.Contains($"试样{i}")) - { - stdDevRow[$"试样{i}"] = DBNull.Value; - } - } - for (int i = endSample + 1; i <= currentSampleCount; i++) - { - if (dataTable.Columns.Contains($"试样{i}")) - { - stdDevRow[$"试样{i}"] = DBNull.Value; + // 只在该组第一个试样列显示标准偏差 + if (i == startSample) + { + stdDevRow[$"试样{i}"] = stdDev; + } + else + { + stdDevRow[$"试样{i}"] = DBNull.Value; + } } } dataTable.Rows.Add(stdDevRow);