// Расчет натяжения спиц. /// <summary> /// Расчет натяжения спиц. /// </summary> /// <param name="dataGridView">DataGridView на котором расположены элементы с Tm1Reading.</param> /// <param name="groupBox">GroupBox на котором расположены элементы с Tm1Reading.</param> /// <param name="controlsNameTm1Reading">Имя элементов с Tm1Reading.</param> /// <returns>Массив натяжения спиц.</returns> public float[] CalculateTensionKgf(DataGridView dataGridView, GroupBox groupBox, string controlsNameTm1Reading) { // Объект FormControls. var formControl = new FormControls(); // Массив натяжения спиц в кгс. var tensionKgf = new List <float>(); // Значения из таблицы DataGridView. List <string[]> dataGridViewValues = formControl.GetDataGridViewValues(dataGridView); // Массив TM-1 Reading. List <string> tensions = formControl.GetValuesFromGroupControls(groupBox, controlsNameTm1Reading).Values.ToList(); // Определение силы натяжения спицы по TM-1 Reading в таблице DataGridView. foreach (string tension in tensions) { // Найдено ли натяжение в таблице DataGridView. bool isFound = false; for (int j = 0; j < dataGridViewValues[0].Length; j++) { // TM-1 Reading из таблицы DataGridView. string tensionFromTable = dataGridViewValues[0][j]; // Если указанный TM-1 Reading найден в таблице DataGridView, то добавляем натяжение в кгс в массив. if (tension == tensionFromTable) { isFound = true; tensionKgf.Add(float.Parse(dataGridViewValues[1][j])); } } if (!isFound) { tensionKgf.Add(0); } } return(tensionKgf.ToArray()); }
// Определение выхода натяжения спицы за границы допустимого интервала. /// <summary> /// Определение выхода натяжения спицы за границы допустимого интервала. /// </summary> /// <param name="groupBox">GroupBox на котором размещены элементы с TensionKgf.</param> /// <param name="controlOffset">Элемент от которого будет произведен отступ иконки выхода натяжения спицы за границы допустимого интервала.</param> /// <param name="errorProvider">ErrorProvider.</param> /// <param name="controlsName">Имя элементов с натяжением спиц.</param> /// <param name="lowerTensionLimit">Нижняя граница допустимого интервала натяжения.</param> /// <param name="upperTensionLimit">Верхняя граница допустимого интервала натяжения.</param> public void SetWithinTensionLimit( GroupBox groupBox, Control controlOffset, ErrorProvider errorProvider, string controlsName, double lowerTensionLimit, double upperTensionLimit) { // Установка иконки выхода натяжения спицы за границы допустимого интервала. errorProvider.Icon = icons.ErrorProviderError; // Объект FormControls. FormControls formControl = new FormControls(); // Массив натяжения спиц в кгс. Dictionary <Control, string> tensionsKgf = formControl.GetValuesFromGroupControls(groupBox, controlsName); // Иконка для отображения выхода натяжения за границы интервала. errorProvider.Icon = icons.ErrorProviderError; foreach (KeyValuePair <Control, string> tensionKgf in tensionsKgf) { // Определение допуска натяжения спиц. var withinTensionLimit = isWithinTensionLimit(int.Parse(tensionKgf.Value), lowerTensionLimit, upperTensionLimit); // Установка отступа иконки от контрола. errorProvider.SetIconPadding(tensionKgf.Key, +(controlOffset.Size.Width / 2)); // Формирование сообщения об ошибке. var errorMessage = ""; if (!withinTensionLimit) { errorMessage = "Outside limit"; } // Установка ошибки. errorProvider.SetError(tensionKgf.Key, errorMessage); } }