public void AddMultipleItemStatisticsSet(MultipleItemStatisticsSet newSet) { _itemStatisticsSets.Add(newSet); comboBoxSelectedSet.Items.Add(newSet.Name); // Update the UI to comply with the new set of dataDelivery. foreach (PropertyStatisticsData data in newSet.PropertiesData) { ListViewItem listViewItemSelectionItem = new ListViewItem(data.Columns); // AddElement the name of the set here. listViewItemSelectionItem.Tag = data; listViewItemSelection.Items.Add(listViewItemSelectionItem); } if (listViewItemSelection.Columns.Count > 0) { listViewItemSelection.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); } }
/// <summary> /// MultipleItemStatisticsSet parentSet CAN be NULL. /// </summary> public PropertyStatisticsData(MultipleItemStatisticsSet parentSet, PropertyInfo info, object[] items) { _parentSet = parentSet; Info = info; if (items.Length == 0) { return; } int positiveCount = 0; int negativeCount = 0; int consecutivePositive = 0; int consecutiveNegative = 0; double consecutivePositivesSum = 0; double consecutiveNegativesSum = 0; MethodInfo getMethodInfo = info.GetGetMethod(false); foreach (object item in items) { object objResult = getMethodInfo.Invoke(item, null); double value; bool result = double.TryParse(objResult.ToString(), out value); _values.Add(value); System.Diagnostics.Debug.Assert(result, "Parsing value failed."); _maximumValue = Math.Max(value, _maximumValue); _minimumValue = Math.Min(value, _minimumValue); if (value > 0) { positiveCount++; consecutivePositive++; consecutivePositivesSum += value; consecutiveNegative = 0; consecutiveNegativesSum = 0; } else if (value < 0) { negativeCount++; consecutiveNegative++; consecutiveNegativesSum += value; consecutivePositive = 0; consecutivePositivesSum = 0; } _sum += value; _consecutivePositivesSum = Math.Max(_consecutivePositivesSum, consecutivePositivesSum); _consecutiveNegativesSum = Math.Min(_consecutiveNegativesSum, consecutiveNegativesSum); _consecutivePositives = Math.Max(_consecutivePositives, consecutivePositive); _consecutiveNegatives = Math.Max(_consecutiveNegatives, consecutiveNegative); } _positivePercentage = 100 * (double)positiveCount / (double)items.Length; _negativePercentage = 100 * (double)negativeCount / (double)items.Length; _averageValue = _sum / items.Length; }