/// <summary>
 ///   <para>Close the form and update the selected item ID</para>
 /// </summary>
 private void btnOk_Click(object sender, EventArgs e)
 {
     if (frmItemTreeTabControl.SelectedTab.Equals(frmItemTreeTabBrowse))
     {
         if (treeItems.SelectedNode != null)
         {
             ItemNodeInfo itemNodeInfo = (ItemNodeInfo)treeItems.SelectedNode.Tag;
             if (itemNodeInfo.item.Length != 0)
             {
                 m_selectedItemId = treeItems.SelectedNode.Name;
                 this.Close();
             }
         }
     }
     else
     {
         if (searchResultList.SelectedItems != null &&
             searchResultList.SelectedItems.Count != 0)
         {
             ListViewItem listViewItem = searchResultList.SelectedItems[0];
             m_selectedItemId = listViewItem.SubItems[0].Text;
             this.Close();
         }
     }
 }
        private void beforeNodeExpand(object sender, TreeViewCancelEventArgs e)
        {
            if (e.Node != null)
            {
                if (e.Node.Nodes.Count == 1 &&
                    e.Node.Nodes[0].Name.Equals("") &&
                    e.Node.Nodes[0].Text.Equals("") &&
                    e.Node.Nodes[0].Tag == null)
                {
                    // This is a dummy node; the children of this node have not yet been queried
                    Cursor = Cursors.WaitCursor;

                    e.Node.Nodes.Remove(e.Node.Nodes[0]); // Remove the dummy node
                    List <CodeValue> children;
                    ItemNodeInfo     itemNodeInfo = (ItemNodeInfo)e.Node.Tag;
                    {
                        // Obtain the items of the type
                        children = Database.Database.getItems(itemNodeInfo.category, itemNodeInfo.subCategory);
                    }

                    String   id;
                    TreeNode node;
                    String   itemId    = "";
                    TreeNode dummyNode = createDummyNode();
                    foreach (CodeValue child in children)
                    {
                        id        = child.code.ToString();
                        node      = new TreeNode();
                        node.Name = id;
                        node.Text = child.value + " (" + id + ")";
                        itemId    = id;
                        node.Tag  = new ItemNodeInfo(itemNodeInfo.category,
                                                     itemNodeInfo.subCategory,
                                                     itemId,
                                                     true);
                        e.Node.Nodes.Add(node);
                        if (itemId.Length == 0)
                        {
                            // This is a type so add a dummy item node
                            node.Nodes.Add((TreeNode)dummyNode.Clone());
                        }
                    }
                    Cursor = Cursors.Default;
                }
            }
        }