//добавление компьютера private void BAddComputer_Click(object sender, EventArgs e) { //вызов диалогового окна создания компьютера Computer computer; ComputerCreatingForm computerCreatingForm = new ComputerCreatingForm(); computerCreatingForm.ShowDialog(); //при подтверждении пользователем - создать новый компьютер, добавить в список менеджера и дерево в интерфейсе if (computerCreatingForm.DialogResult == DialogResult.OK) { computer = computerCreatingForm.GetComputer(); if (manager.AddComputer(computer)) { TreeNode node = new TreeNode(computer.ToString(), 0, 0); computerTree.Nodes.Add(node); StatusUpdate(); } else { MessageBox.Show("Компьютер с таким именем уже существует!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } }
//замена компьютера private void ComputerTree_DoubleClick(object sender, EventArgs e) { //если выделен узел и он не является устройством if (computerTree.SelectedNode != null && computerTree.SelectedNode.Parent == null) { //получение объекта из выбранного узла Computer computer = (Computer)computerTree.SelectedNode.Text; //узел выбранного компьютера TreeNode selected = computerTree.SelectedNode; //вызов диалогового окна создания компьютера, с установленными значениями полей ComputerCreatingForm computerCreatingForm = new ComputerCreatingForm(computer); computerCreatingForm.ShowDialog(); for (int i = 0; i < manager.ComputerCount; i++) { if (manager[i].Equals(computer)) { computer = manager[i]; break; } } //при подтверждении пользователем - заменить устройство if (computerCreatingForm.DialogResult == DialogResult.OK) { Computer newComputer = computerCreatingForm.GetComputer(); //коллекция подключенных устройств, которые надо будет отключить при замене компа var devicesToDisconnect = new List <TreeNode>(); //собираем устройства для отключения foreach (TreeNode a in selected.Nodes) { Device deviceToDisconnect = (Device)a.Text; // /**/ for (int i = 0; i < computer.DevicesCount; i++) { if (computer[i].Equals(deviceToDisconnect)) { deviceToDisconnect = computer[i]; break; } } //если устройство отключается, добавляем его в список устройств if (manager.DisconnectDevice(computer, deviceToDisconnect)) { devicesToDisconnect.Add(a); LBDevices.Items.Add(deviceToDisconnect); } } //убираем накопленные устройства из коллекции foreach (TreeNode a in devicesToDisconnect) { a.Remove(); } //заменяем компьютер if (manager.ChangeComputer(computer, newComputer)) { computerTree.Nodes.Remove(selected); TreeNode node = new TreeNode(newComputer.ToString(), 0, 0); computerTree.Nodes.Add(node); StatusUpdate(); } else { MessageBox.Show("Компьютер с таким именем уже существует!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } }