我想在FrmMain窗体中建一个TreeView作应用程序的导航菜单,当点击TreeView的某个节点时在其右边就会显示对应的功能块,1)这个调用方法是什么?用反射还是什么别的方法?
2)这个TreeView调用什么样的控件较为合适,是FORM,还是PANEL,或是别的?
谢谢大家分享和指导!

解决方案 »

  1.   

    你的node节点的tag可以保存一个关于模块信息的类或结构体,然后根据里面的内容,比如模块名动态的加载(反射)
      

  2.   

    用父窗体,点击TreeView节点显示相应的窗体信息,
    递归绑定节点信息        private void bindTreeView1()
            {
                string sql = "select * from doctype where isdel=0";
                DataTable dt = db.ExecuteDataTable(sql, CommandType.Text, null);
                DataRow[] dr=dt.Select("updirid='-1'");
                for (int i = 0; i < dr.Length; i++)
                {
                    TreeNode tn = new TreeNode();
                    tn.Text = dr[i]["docdirname"].ToString();
                    tn.Tag=dr[i]["docdirid"].ToString();
                    if (dr[i]["isdir"].ToString() == "1")
                    {
                        tn.ImageIndex = 0;
                        FillTree(tn, dt);                   
                    }
                    else
                    {
                        tn.ImageIndex = 1;
                    }
                    treeView1.Nodes.Add(tn);
                }
            }        private void FillTree(TreeNode node, DataTable dt)
            {
                DataRow[] dd = dt.Select("updirid='"+node.Tag.ToString()+"'");
                if (dd.Length > 0)
                {
                    for (int i = 0; i < dd.Length; i++)
                    {
                        TreeNode tnn = new TreeNode();
                        tnn.Text = dd[i]["docdirname"].ToString();
                        tnn.Tag = dd[i]["docdirid"].ToString();
                        if (dd[i]["isdir"].ToString() == "1")
                        {
                            tnn.ImageIndex = 0;
                            FillTree(tnn, dt);
                        }
                        else
                        {
                            tnn.ImageIndex = 1;
                        }
                        node.Nodes.Add(tnn);
                    }
                }
            }
      

  3.   

    能用panel等容器控件写一段代码吗?