/// <summary> /// Removes a device from the tree view. /// </summary> /// <param name="device">The device to remove.</param> public void RemoveDevice(Device device) { TreeNode[] lnFoundNodes = this.Nodes.Find(UPnPDeviceTreeItem.KeyFor(device), true); foreach (TreeNode lnNode in lnFoundNodes) { lnNode.Remove(); } }
/// <summary> /// Gets a tree node collection for a device. /// </summary> /// <param name="device">The device to get the collection for.</param> /// <returns>The tree node collection for the device, or null if not found.</returns> protected TreeNodeCollection GetDeviceNodeFor(Device device) { List <Device> ldDevices = new List <Device>(); // Build device heirarchy list Device ldParent = device; do { ldDevices.Insert(0, ldParent); } while ((ldParent = ldParent.ParentDevice) != null); // Find or add each device to the list TreeNodeCollection lnCurrentNodes = this.Nodes; bool lbAdding = false; foreach (Device ldDevice in ldDevices) { // Have we found it already if (!lbAdding) { TreeNode[] lnFoundNodes = lnCurrentNodes.Find(UPnPDeviceTreeItem.KeyFor(ldDevice), false); if (lnFoundNodes.Length == 1) { lnCurrentNodes = lnFoundNodes[0].Nodes; } else { lbAdding = true; } } // Are we adding already if (lbAdding) { lbAdding = true; lnCurrentNodes = AddUPnPItem(lnCurrentNodes, new UPnPDeviceTreeItem(ldDevice)).Nodes; } } // Return the last collection of nodes for the last node added / found return(lnCurrentNodes); }