private TreeNode selNode; // выбранный узел дерева #endregion Fields #region Constructors /// <summary> /// Конструктор /// </summary> public FrmDevTemplate() { InitializeComponent(); devTemplate = new Modbus.DeviceModel(); modified = false; fileName = ""; selElemGroup = null; selElemInfo = null; selCmd = null; selNode = null; grsNode = treeView.Nodes["grsNode"]; cmdsNode = treeView.Nodes["cmdsNode"]; procChangedEv = false; ConfigDir = ""; LangDir = ""; }
private void treeView_AfterSelect(object sender, TreeViewEventArgs e) { // отображение выбранного объекта и его свойств selNode = e.Node; object tag = selNode.Tag; selElemGroup = tag as Modbus.ElemGroup; selElemInfo = tag as ElemInfo; selCmd = tag as Modbus.Cmd; if (selElemGroup != null) ShowElemGroupProps(selElemGroup); else if (selElemInfo != null) ShowElemProps(selElemInfo); else if (selCmd != null) ShowCmdProps(selCmd); else if (selNode == grsNode) ShowElemGroupProps(null); else if (selNode == cmdsNode) ShowCmdProps(null); else // не выполняется DisableProps(); // установка доступности кнопок btnAddElem.Enabled = selElemGroup != null || selElemInfo != null; bool nodeIsOk = selElemGroup != null || selCmd != null || selElemInfo != null && selElemInfo.ElemGroup.Elems.Count > 1 /*последний не удалять*/; btnMoveUp.Enabled = nodeIsOk && selNode.PrevNode != null; btnMoveDown.Enabled = nodeIsOk && selNode.NextNode != null; btnDelete.Enabled = nodeIsOk; }
/// <summary> /// Заполнить дерево в соответствии с шаблоном устройства /// </summary> private void FillTree() { // обнуление выбранных объектов и снятие признака изменения selElemGroup = null; selCmd = null; selElemInfo = null; ShowElemGroupProps(null); Modified = false; // приостановка отрисовки дерева treeView.BeginUpdate(); // очистка дерева grsNode.Nodes.Clear(); cmdsNode.Nodes.Clear(); treeView.SelectedNode = grsNode; // заполнение узла групп элементов foreach (Modbus.ElemGroup elemGroup in devTemplate.ElemGroups) grsNode.Nodes.Add(NewElemGroupNode(elemGroup)); // заполнение узла команд foreach (Modbus.Cmd cmd in devTemplate.Cmds) cmdsNode.Nodes.Add(NewCmdNode(cmd)); // раскрытие основных узлов дерева grsNode.Expand(); cmdsNode.Expand(); // возобновление отрисовки дерева treeView.EndUpdate(); }
private void btnAddCmd_Click(object sender, EventArgs e) { // создание команды и добавление в шаблон устройства Modbus.Cmd cmd = new Modbus.Cmd(Modbus.TableTypes.Coils); int ind = selNode != null && selNode.Tag is Modbus.Cmd ? selNode.Index + 1 : devTemplate.Cmds.Count; devTemplate.Cmds.Insert(ind, cmd); // создание узла дерева команды TreeNode cmdNode = NewCmdNode(cmd); cmdsNode.Nodes.Insert(ind, cmdNode); treeView.SelectedNode = cmdNode; txtCmdName.Select(); // установка признака изменения Modified = true; }