コード例 #1
0
        /// <summary>
        /// Возвращает узел дерева "не в списке", а если его не существует, то создает новый.
        /// </summary>
        /// <returns>Возвращает узел дерева "не в списке".</returns>
        public LCTreeNodeNoList ReturnGroupNoList()
        {
            TreeNode treeNode = LCDirectory.treeView.Nodes[0];

            if (treeNode != null)
            {
                //перебор всех дочерних узлов
                foreach (TreeNode treeNodeWorking in treeNode.Nodes)
                {
                    if (((LCTreeNode)treeNodeWorking).LCObjectType == LCObjectType.NoList)
                    {
                        return((LCTreeNodeNoList)treeNodeWorking);
                    }
                }
            }
            LCTreeNodeNoList lcTreeNodeNoList = new LCTreeNodeNoList
            {
                Text             = "<Не в списке>",
                Description      = "Компьютеры которые не добавлялись в группу",
                ContextMenuStrip = LCTreeNode.noListContextMenuStrip,
                ImageIndex       = 2,
                ToolTipText      = "<Не в списке>\nКомпьютеры которые не добавлялись в группу. Сообщение для отладки: Ранее группы не было!"
            };

            treeNode.Nodes.Add(lcTreeNodeNoList);
            return(lcTreeNodeNoList);
        }
コード例 #2
0
ファイル: FormMain.cs プロジェクト: Mutexman/LC
        /// <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();
            }
        }
コード例 #3
0
ファイル: FormMain.cs プロジェクト: Mutexman/LC
 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 адресом");
     }
 }
コード例 #4
0
        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);
        }
コード例 #5
0
        /// <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);
                }
            }
        }
コード例 #6
0
ファイル: FormMain.cs プロジェクト: Mutexman/LC
        /// <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;
                    }
                    }
                }
            }
        }