private void trvRepositories_BeforeSelect(object sender, TreeViewCancelEventArgs e)
 {
     if (e.Node == null)
     {
         txtRepoDetails.Text = "";
         return;
     }
     if (e.Node.Tag is RepositoryList.Category)
     {
         RepositoryList.Category c = (RepositoryList.Category)e.Node.Tag;
         txtRepoDetails.Text = c.Description;
     }
     if (e.Node.Tag is RepositoryList.Repository)
     {
         RepositoryList.Repository r = (RepositoryList.Repository)e.Node.Tag;
         txtRepoDetails.Text = r.Description;
     }
 }
        private TreeNode HandleRepoCategory(TreeNode parent, RepositoryList.Category c)
        {
            TreeNode tn = new TreeNode();

            tn.Text = c.Name;
            tn.Tag  = c;
            if (parent != null)
            {
                parent.Nodes.Add(tn);
            }
            foreach (RepositoryList.Category subc in c.Categories)
            {
                HandleRepoCategory(tn, subc);
            }
            foreach (RepositoryList.Repository subr in c.Repositories)
            {
                HandleRepo(tn, subr);
            }
            return(tn);
        }