// Расчет натяжения спиц.
        /// <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);
            }
        }