/// <summary>
        /// Создать экземпляр Presenter и добавить в словарь.
        /// </summary>
        private void CreateNewCommPresenter(BarometerControlView inBarometerControlView, DeviceBRS1MViewModel deviceBRS1M)
        {
            // После того, как интерфейс готов, надо придумать как подпихнуть экземпляр интерфейса в Presenter.
            // В данном случае, для простой задачи, можно сделать это через конструктор,
            // в более сложных ситуациях Presenter может получать ссылку на конкретный экземпляр через специальную фабрику представлений
            // или даже сам являться фабрикой, порождающий необходимые Представления в зависимости от ситуации.
            CommPresenter oneCommPresenter = new CommPresenter(inBarometerControlView, managerPorts, deviceBRS1M);

            Presenters.Add(inBarometerControlView.Name, oneCommPresenter);
        }
        /// <summary>
        /// Расположить контрол на пенели.
        /// </summary>
        /// <param name="inBarometerControlView"></param>
        /// <param name="indexRow"></param>
        private void AddBarometerControlToPanel(BarometerControlView inBarometerControlView)
        {
            tlpBarometers.SuspendLayout();
            tlpBarometers.RowCount = tlpBarometers.RowCount + 1;
            tlpBarometers.RowStyles.Add(new RowStyle(SizeType.AutoSize, inBarometerControlView.Height));
            tlpBarometers.Controls.Add(inBarometerControlView, 0, tlpBarometers.RowCount);// последний добавляемый должен быть всегда внизу
            tlpBarometers.ResumeLayout(false);

            tlpBarometers.Height = inBarometerControlView.Height * tlpBarometers.Controls.Count;
            tlpBarometers.ScrollControlIntoView(inBarometerControlView);
            tlpBarometers.Refresh();
        }
        /// <summary>
        /// Подсветить выделенный в ComboBoxControlsToDelete контрол на панели.
        /// Сам ComboBoxControlsToDelete заполнен.
        /// </summary>
        /// <param name="inBarometerControlView"></param>
        private void HighlightingSelectedControl(BarometerControlView inBarometerControlView)
        {
            foreach (UserControl _userControl in tlpBarometers.Controls)
            {
                _userControl.BackColor = SystemColors.Control;
            }

            inBarometerControlView.BackColor = Color.LightBlue;

            if (ComboBoxControlsToDelete.ComboBoxToDelete.ComboBoxControlsToDelete.SelectedIndex != -1)
            {
                tslDeleteBarometer.Enabled = true;
                tlpBarometers.ScrollControlIntoView(inBarometerControlView);
            }
            else
            {
                tslDeleteBarometer.Enabled = false;
            }
        }
        /// <summary>
        /// Удалить контрол по заданному индексу из панели.
        /// </summary>
        /// <param name="selectedIndex"></param>
        private void RemoveAtBarometerControlView(int selectedIndex)
        {
            ClosePortAllPresenters();
            BarometerControlView mBarometerControlView = (BarometerControlView)ComboBoxControlsToDelete.ComboBoxToDelete.ComboBoxControlsToDelete.Items[selectedIndex];

            Presenters.Remove(mBarometerControlView.Name);
            ComboBoxControlsToDelete.ComboBoxToDelete.ComboBoxControlsToDelete.Items.Remove(mBarometerControlView);
            // чтобы не удалять из панели конкретный элемент, так кака может сбиться соответствие индексов
            // между ComboBoxControlsToDelete и tlpBarometers, произвести заполнение панели с нуля
            tlpBarometers.Controls.Clear();
            tlpBarometers.RowCount = 0;
            tlpBarometers.RowStyles.Clear();
            tlpBarometers.AutoScroll = false;
            tlpBarometers.Height     = 100;

            for (int J = 0; J < mMainViewModel.PartWorkspace.CurrentPart.DeviceDetaills.Count; J++)
            {
                AddBarometerControlToPanel((BarometerControlView)ComboBoxControlsToDelete.ComboBoxToDelete.ComboBoxControlsToDelete.Items[J]);
            }

            tlpBarometers.AutoScroll = true;
        }
        /// <summary>
        /// Добавить новый контрол по заданному индексу на панель.
        /// Перегруженный.
        /// </summary>
        /// <param name="indexRow"></param>
        private void AddNewBarometerControlView(DeviceBRS1MViewModel deviceBRS1M)
        {
            ClosePortAllPresenters();
            tslDeleteBarometer.Enabled = false;
            allControlsCount          += 1;

            BarometerControlView mBarometerControlView = new BarometerControlView
            {
                BorderStyle = BorderStyle.Fixed3D,
                Dock        = DockStyle.Fill,
                TabIndex    = tlpBarometers.RowCount,
                Name        = USER_CONTROL_BAROMETER + allControlsCount,
                Tag         = (string)deviceBRS1M.ParameterName
            };

            ComboBoxControlsToDelete.ComboBoxToDelete.ComboBoxControlsToDelete.Items.Add(mBarometerControlView);
            AddBarometerControlToPanel(mBarometerControlView);
            HighlightingSelectedControl(mBarometerControlView);
            ComboBoxControlsToDelete.ComboBoxToDelete.ComboBoxControlsToDelete.Text = string.Empty;

            CreateNewCommPresenter(mBarometerControlView, deviceBRS1M);
        }