/// <summary> /// Открывает новое окно для управления устройством /// </summary> /// <param name="device"></param> private void NewForm(Equipment device) { // Окно для этого устройства ещё не открыто Vkt5RemoteConsoleForm mainForm = new Vkt5RemoteConsoleForm(); // Заголовок окна mainForm.Text = "Удалённый пульт - " + device.ToString(); RemoteConsoleFormParams param = new RemoteConsoleFormParams(); // Параметры базовой формы опроса param.PollConnections = device.PollSettings.Connections; if (param.PollConnections != null && param.PollConnections.Length > 0) { param.SelectedConnection = param.PollConnections[0]; } // Параметры формы удалённого пульта param.Device = device; // Инициализация mainForm.Initialize(param, Plugin.Host.Server); Plugin.Host.MainWindow.AddPage(mainForm); mainForm.Show(); mainForm.FormClosed += new System.Windows.Forms.FormClosedEventHandler(currentForm_FormClosed); lock (this.visibleForms) { this.visibleForms.Add(mainForm); } }
/// <summary> /// Пользователь выбрал пункт меню или навигационного окна "Удалённый пульт" /// </summary> /// <param name="actionId"></param> /// <param name="sender"></param> private void OnRemoteConsoleOpen(int actionId, object sender) { MeasurePoint measurePoint = (MeasurePoint)sender; // Запрашиваем требуемую для работы информацию measurePoint.Refresh(MeasurePointInfoFlags.Equipment); // Проверим, что у точки учёта есть устройство if (measurePoint.Device == null) { MessageBox.Show("У выбранной точки учёта не задано устройство. Выберите точку учёта с поддерживаемым устройством.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // Проверим, что мы работаем с ВКТ-5 if (!CheckDeviceModel(measurePoint.Device)) { MessageBox.Show("Удалённый пульт ВКТ-5 не поддерживает работу с устройствами " + measurePoint.Device.Model.Title, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // Проверим, открыто ли окно с опросом этого устройства Vkt5RemoteConsoleForm currentForm = GetOpenedForm(measurePoint.Device); if (currentForm == null) { // Такого окна нет, открываем NewForm(measurePoint.Device); } else { // Окно уже есть, переводим фокус на него currentForm.Show(); currentForm.Focus(); } }