private void ToolStripMenuItemGetHostPassword_Click(object sender, EventArgs e) { if (this.listViewHosts.SelectedItems.Count > 0) { LCTreeNodeHost h = (LCTreeNodeHost)this.listViewHosts.SelectedItems[0].Tag; if (h.Password.Length > 0) { //Пустой текст в этот метод передать нельзя, поэтому пока сделано так. //Надо позже сделать некативным пункт меню "Копировать ШК" если ШК пустой Clipboard.SetText(h.Password); } } }
private void ListViewHosts_SelectedIndexChanged(object sender, EventArgs e) { if (this.listViewHosts.SelectedItems.Count > 0) { LCTreeNodeHost lcHost = (LCTreeNodeHost)this.listViewHosts.SelectedItems[0].Tag; LCTypeHost lcTypeHost = lcHost.TypeHost; // Выделяем узел в дереве. this.treeViewObject.SelectedNode = lcHost; switch (lcTypeHost) { case LCTypeHost.ETCO: { this.toolStripComputers.Hide(); this.toolStripETCO.Show(); this.toolStripMFU.Hide(); this.toolStripSPD.Hide(); } break; case LCTypeHost.HOST: { this.toolStripComputers.Show(); this.toolStripETCO.Hide(); this.toolStripMFU.Hide(); this.toolStripSPD.Hide(); } break; case LCTypeHost.MFU: { this.toolStripComputers.Hide(); this.toolStripETCO.Hide(); this.toolStripMFU.Show(); this.toolStripSPD.Hide(); } break; case LCTypeHost.SPD: { this.toolStripComputers.Hide(); this.toolStripETCO.Hide(); this.toolStripMFU.Hide(); this.toolStripSPD.Show(); } break; } } }
/// <summary> /// Поиск хоста по ip адресу /// </summary> /// <param name="ip">IP адрес.</param> /// <returns>Возвращает найденный хост</returns> public LCTreeNodeHost FindHost(string ip) { foreach (LCTreeNode node in AllLCTreeNode(treeView.Nodes)) { if (node.LCObjectType == LCObjectType.Host) { LCTreeNodeHost lcHost = (LCTreeNodeHost)node; if (lcHost.IP == ip) { this.WriteListBox("Найдена хост с ip : " + lcHost.IP + "."); return(lcHost); } } } return(null); }
/// <summary> /// Метод добавления хоста к данной группе /// </summary> /// <param name="nameHost">Имя хоста</param> /// <param name="ip">IP-адрес хоста</param> /// <param name="description">Описание хоста</param> /// <returns>Возвращает созданный хост</returns> public LCTreeNodeHost AddHost(string nameHost, string ip, string description) { // создаем новый узел Host LCTreeNodeHost lcTreeNodeHost = new LCTreeNodeHost { Text = nameHost, IP = ip, Barcode = "", Login = "", Password = "", Description = description, ContextMenuStrip = LCTreeNode.computerContextMenuStrip, ImageIndex = 3 }; this.Nodes.Add(lcTreeNodeHost); lcTreeNodeHost.UpdateLC(); this.WriteListBoxOperation("Добавлен компьтер : " + nameHost); return(lcTreeNodeHost); }
/// <summary> /// Метод выполянющий команду для которой предназначенна данная кнопка /// </summary> public void Execute() { string ip; try { LCTreeNodeHost lcTreeNodeHost = (LCTreeNodeHost)listItems.SelectedItems[0].Tag; ip = lcTreeNodeHost.IP; //ip = listItems.SelectedItems[0].SubItems[0].Text; } catch (System.ArgumentOutOfRangeException e) { this.WriteListBox(e.Message); this.WriteListBox("Не выделен компьютер для подключения !"); return; } string execStr = this.parameters; execStr = execStr.Replace("@[IP]", ip); execStr = execStr.Replace("@[User]", FormMain.User); string displayStr = execStr; execStr = execStr.Replace("@[Password]", FormMain.Password); displayStr = displayStr.Replace("@[Password]", "********"); this.WriteListBox(" Выполняем: " + this.command + " " + displayStr); try { System.Diagnostics.Process.Start(this.command, execStr); } catch (System.ComponentModel.Win32Exception e) { this.WriteListBox(e.Message); } catch (InvalidOperationException e) { this.WriteListBox(e.Message); } }
/// <summary> /// Метод переопределения сети для хостов из группы "Не в списке" /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ToolStripMenuItemFindSubnet_Click(object sender, EventArgs e) { List <String> list = new List <String>(); TreeNode node = this.lCDirectory.ReturnGroupNoList(); foreach (TreeNode tn in node.Nodes) { LCTreeNodeHost lc = (LCTreeNodeHost)tn; list.Add(lc.IP); if (lc.Tag != null) { ((ListViewItem)lc.Tag).Remove(); } } // Удаляем группу "Не в списке" node.Remove(); // проверяем на всякий пожарный, не пустое ли дерево справочника if (this.treeViewObject.Nodes.Count > 0) { this.treeViewObject.BeginUpdate(); foreach (string st in list) { // Ищем принадлежность ПК к какой либо сети LCTreeNodeSubnet lcSubnet = this.lCDirectory.FindSubnetIP(st); if (lcSubnet != null) { // и сразу же выделяем этот объект this.OpenLCTreeNode(lcSubnet.AddHost(st, st, "")); } else { LCTreeNodeNoList lcNoList = lCDirectory.ReturnGroupNoList(); // и сразу же выделяем этот объект this.OpenLCTreeNode(lcNoList.AddHost(st, st, "")); } } this.treeViewObject.EndUpdate(); } }
private void FindAndOpenHost(string st) { if (this.lCDirectory.CorrectIP(ref st)) { this.toolStripTextBoxIP.Text = st; this.WriteListBox("Поиск компьютера с IP " + this.toolStripTextBoxIP.Text + " запущен."); LCTreeNodeHost lcHost = this.lCDirectory.FindHost(st); if (lcHost != null) { //Выделяем найденый хост в дереве LCDirectory.treeView.SelectedNode = lcHost; this.OpenLCTreeNode(lcHost); this.WriteListBox("Найден хост с именем: " + lcHost.Text + "."); } else { //Определяем принадлежность хоста сети LCTreeNodeSubnet findSubnet = this.lCDirectory.FindSubnetIP(st); if (findSubnet != null) { this.OpenLCTreeNode(findSubnet.AddHost(st, st, "")); this.WriteListBox("IP адрес " + st + " принадлежит сети " + findSubnet.Text); } else { LCTreeNodeNoList lcNoList = (LCTreeNodeNoList)this.lCDirectory.ReturnGroupNoList(); //добавляем хост и сразу же выделяем этот объект this.OpenLCTreeNode(lcNoList.AddHost(st, st, "")); this.WriteListBox("IP адрес " + st + " добавлен в группу " + lcNoList.Text); } } } else { this.WriteListBox("Введенное значение не является IP адресом"); } }
private XElement SaveChildren(LCTreeNode item, XElement current) { LCTreeNode xnodWorking; switch (item.LCObjectType) { case LCObjectType.Group: { if (item.Name != "Root") { LCTreeNodeGroup lcGroup = (LCTreeNodeGroup)item; XElement xElement = new XElement("Group", new XAttribute("NameGroup", lcGroup.Text), new XAttribute("Description", lcGroup.Description)); current = xElement; } } break; case LCObjectType.Host: { LCTreeNodeHost lcHost = (LCTreeNodeHost)item; XElement xElement = new XElement("Host", new XAttribute("TypeHost", lcHost.TypeHost.ToString()), new XAttribute("NameHost", lcHost.Text), new XAttribute("IP", lcHost.IP), new XAttribute("Barcode", lcHost.Barcode), new XAttribute("Login", lcHost.Login), new XAttribute("Password", lcHost.Password), new XAttribute("Description", lcHost.Description));; current = xElement; } break; case LCObjectType.NoList: { LCTreeNodeNoList lcNoList = (LCTreeNodeNoList)item; XElement xElement = new XElement("NoList", new XAttribute("NameGroup", lcNoList.Text), new XAttribute("Description", lcNoList.Description)); current = xElement; } break; case LCObjectType.SubNet: { LCTreeNodeSubnet lcSubnet = (LCTreeNodeSubnet)item; XElement xElement = new XElement("Subnet", new XAttribute("NameSubnet", lcSubnet.Text), new XAttribute("IPSubnet", lcSubnet.IPSubnet), new XAttribute("MaskSubnet", lcSubnet.MaskSubnet), new XAttribute("Description", lcSubnet.Description)); current = xElement; } break; } //рекурсивный перебор всех дочерних узлов if (item.Nodes.Count > 0) { xnodWorking = (LCTreeNode)item.FirstNode; while (xnodWorking != null) { current.Add(SaveChildren(xnodWorking, current)); xnodWorking = (LCTreeNode)xnodWorking.NextNode; } } return(current); }
/// <summary> /// Метод добавления дочерних узлов в дерево /// </summary> /// <param name="xnod">XML элемент</param> /// <param name="newNode">Компонент TreeNode в котором создаются узлы</param> private void AddChildrenDOMXML(XElement xnod, TreeNode newNode) { if (xnod.NodeType == System.Xml.XmlNodeType.Element) { switch (xnod.Name.ToString()) { case "Group": { LCTreeNodeGroup lcTreeNodeGroup = new LCTreeNodeGroup { Text = xnod.Attribute("NameGroup").Value, Description = xnod.Attribute("Description").Value, ContextMenuStrip = LCTreeNode.groupContextMemuStrip, ImageIndex = 2 }; newNode.Nodes.Add(lcTreeNodeGroup); lcTreeNodeGroup.UpdateLC(); newNode = lcTreeNodeGroup; } break; case "NoList": { LCTreeNodeNoList lcTreeNodeNoList = new LCTreeNodeNoList { Text = xnod.Attribute("NameGroup").Value, Description = xnod.Attribute("Description").Value, ContextMenuStrip = LCTreeNode.noListContextMenuStrip, ImageIndex = 2 }; lcTreeNodeNoList.ToolTipText += lcTreeNodeNoList.Text; lcTreeNodeNoList.ToolTipText += "\n" + lcTreeNodeNoList.Description; newNode.Nodes.Add(lcTreeNodeNoList); newNode = lcTreeNodeNoList; } break; case "Host": { LCTreeNodeHost lcTreeNodeHost = new LCTreeNodeHost { Text = xnod.Attribute("NameHost").Value, IP = xnod.Attribute("IP").Value, Barcode = xnod.Attribute("Barcode").Value, Login = xnod.Attribute("Login").Value, Password = xnod.Attribute("Password").Value, Description = xnod.Attribute("Description").Value, TypeHost = (LCTypeHost)Enum.Parse(typeof(LCTypeHost), xnod.Attribute("TypeHost").Value), ContextMenuStrip = LCTreeNode.computerContextMenuStrip }; newNode.Nodes.Add(lcTreeNodeHost); lcTreeNodeHost.UpdateLC(); return; } case "Subnet": { LCTreeNodeSubnet lcTreeNodeSubnet = new LCTreeNodeSubnet { Text = xnod.Attribute("NameSubnet").Value, IPSubnet = xnod.Attribute("IPSubnet").Value, MaskSubnet = xnod.Attribute("MaskSubnet").Value, Description = xnod.Attribute("Description").Value, ContextMenuStrip = LCTreeNode.subnetContextMenuStrip, ImageIndex = 5 }; newNode.Nodes.Add(lcTreeNodeSubnet); lcTreeNodeSubnet.UpdateLC(); newNode = lcTreeNodeSubnet; } break; case "Root": { //MessageBox.Show("yes"); //newNode.ImageIndex = 1; //newNode.Text = mapAttributes.Item(1).Value; } break; } foreach (XElement element in xnod.Elements()) { AddChildrenDOMXML(element, newNode); } } }
/// <summary> /// Событие удаления объекта LC /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DeleteLCTreeNode(object sender, EventArgs e) { LCTreeNode lcTreeNode = (LCTreeNode)this.treeViewObject.SelectedNode; string tempStr = lcTreeNode.Text; // Проверяем есть ли у этого узла дочерние объекты if (lcTreeNode.Nodes.Count > 0) { // надо перебрать все узлы if (MessageBox.Show("Объект имеет дочерние узлы! Все равно удалить?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { // Здесь нужен код для удаления из таблиц объектов, которые являются дочерними по отношению к удаляемому объекту // Удаляем текущий //lcTreeNode.Remove(); MessageBox.Show("Пока не реализовано удаление элементов с дочерними объектами!"); // Сообщаем об удалении this.WriteListBox("Группа " + tempStr + " и её дочерние объекты удалены."); } } else { if (MessageBox.Show("Вы дейстительно хотите удалить этот объект ?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { switch (lcTreeNode.LCObjectType) { case LCObjectType.Host: { LCTreeNodeHost lcHost = (LCTreeNodeHost)lcTreeNode; lcHost.RemoveLC(); tempStr = "Компьютер: " + tempStr + " удалён."; // Сообщаем об удалении this.WriteListBox(tempStr); break; } case LCObjectType.SubNet: { LCTreeNodeSubnet lcSubnet = (LCTreeNodeSubnet)lcTreeNode; lcSubnet.RemoveLC(); tempStr = "Сеть: " + tempStr + " удалена."; this.WriteListBox(tempStr); break; } case LCObjectType.Group: { LCTreeNodeGroup lcGroup = (LCTreeNodeGroup)lcTreeNode; lcGroup.RemoveLC(); tempStr = "Группа: " + tempStr + " удалена."; this.WriteListBox(tempStr); break; } case LCObjectType.NoList: { LCTreeNodeNoList lcNoList = (LCTreeNodeNoList)lcTreeNode; lcNoList.Remove(); tempStr = "Группа: " + tempStr + " удалена."; this.WriteListBox(tempStr); break; } } } } }
/// <summary> /// Метод открытия узла дерева. /// </summary> /// <param name="treeNode">Открываемый узел.</param> private void OpenLCTreeNode(TreeNode treeNode) { if (treeNode == null) { return; } LCTreeNode lcTreeNode = (LCTreeNode)treeNode; switch (lcTreeNode.LCObjectType) { case LCObjectType.Host: { this.tabControlObject.SelectedTab = this.tabPageHosts; LCTreeNodeHost lcHost = (LCTreeNodeHost)lcTreeNode; // Делаем активным список хостов this.listViewHosts.Focus(); foreach (ListViewItem curilv in this.listViewHosts.Items) { if (curilv.Tag == lcHost) { // Выделяем нужный элемент в списке curilv.Selected = true; return; } } // определяем родительскую группу элемента LCTreeNode lcNode = (LCTreeNode)lcHost.Parent; // Пока сделано так, в будущем предполагаются что ПК состоят только в сетях. Кроме группы <Не в списке> if (lcNode.LCObjectType == LCObjectType.SubNet) { ListViewGroup lvg = null; foreach (ListViewGroup curGroup in this.listViewHosts.Groups) { if (curGroup.Tag == lcNode) { // Группа существует lvg = curGroup; break; } } if (lvg == null) { // Такой группы еще нет, надо её создать lvg = new ListViewGroup(lcNode.Text); } lvg.Tag = lcNode; this.listViewHosts.Groups.Add(lvg); ListViewItem lvi = new ListViewItem(new string[] { lcHost.TypeHost.ToString(), lcHost.IP, lcHost.Text, lcHost.ParentGroup, lcHost.DescriptionStr }, lvg) { Tag = lcHost }; lcHost.Tag = lvi; this.listViewHosts.Items.Add(lvi); lcHost.UpdateLC(); lvi.Selected = true; } else { ListViewItem lvi = new ListViewItem(new string[] { lcHost.TypeHost.ToString(), lcHost.IP, lcHost.Text, lcHost.ParentGroup, lcHost.DescriptionStr }) { Tag = lcHost }; lcHost.Tag = lvi; this.listViewHosts.Items.Add(lvi); lcHost.UpdateLC(); lvi.Selected = true; } break; } case LCObjectType.SubNet: { this.tabControlObject.SelectedTab = this.tabPageSubnets; this.listViewSubnets.Focus(); LCTreeNodeSubnet lcSubnet = (LCTreeNodeSubnet)lcTreeNode; foreach (ListViewItem cutilv in this.listViewSubnets.Items) { if (cutilv.Tag == lcSubnet) { cutilv.Selected = true; return; } } ListViewItem lvi = new ListViewItem(new string[] { lcSubnet.Text, lcSubnet.IPSubnet, lcSubnet.MaskSubnet, lcSubnet.ParentGroup, lcSubnet.DescriptionStr }) { Tag = lcSubnet }; lcSubnet.Tag = lvi; this.listViewSubnets.Items.Add(lvi); lvi.Selected = true; break; } case LCObjectType.Group: { this.tabControlObject.SelectedTab = this.tabPageGroups; this.listViewGroups.Focus(); LCTreeNodeGroup lcGroup = (LCTreeNodeGroup)lcTreeNode; foreach (ListViewItem curilv in this.listViewGroups.Items) { if (curilv.Tag == lcGroup) { curilv.Selected = true; return; } } ListViewItem lvi = new ListViewItem(new string[] { lcGroup.Text, lcGroup.ParentGroup, lcGroup.DescriptionStr }) { Tag = lcGroup }; lcGroup.Tag = lvi; this.listViewGroups.Items.Add(lvi); lvi.Selected = true; break; } } }