我在给treeView1增加节电时,如何只允许treeView1建立节点到2级啊?比如只允许这样0--------------- 而不能这样:0-----------------------
                         01---------                         01---------------
                         02---------                               001--------
                         03---------                               002--------

解决方案 »

  1.   

    private TreeNode addfirstNode()//添加一层结
    {
    //返回的是刚添加的一层结点
    }private TreeNode addsecondNode(TreeNode firstNode)//添加第二层结点
    {
    //参数是一层结点.也就是要添加的结点的父结点.返回的是添加的结点
    }
      

  2.   

    主要看你在加在哪个TreeNodeCollection中
      

  3.   

    你在treeview的mousedown时候,先获得当前节点,然后判断当前节点是第几层,如果是第一层,就屏蔽添加;如果是第二层就允许添加。
      

  4.   

    感谢各位高手,我的代码如下,请大家多多帮助我修改一下啊:private void button1_Click(object sender, System.EventArgs e)
    {//添加根节点
    TreeNode newNode=new TreeNode(this.textBox1.Text,0,0);
    this.treeView1.Nodes.Add(newNode);
    this.treeView1.Select();
    } private void button2_Click(object sender, System.EventArgs e)
    {//添加子节点
    TreeNode selectedNode=this.treeView1.SelectedNode;
    if(selectedNode==null)
    {
    MessageBox.Show(this,"添加子节点之前必须先选中一个根节点。","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Warning);
    }
    else
    {
    TreeNode newNode=new TreeNode(this.textBox1.Text,1,1);
    selectedNode.Nodes.Add(newNode);
    selectedNode.SelectedImageIndex=1;
    selectedNode.Expand();
    this.treeView1.Select();
    }
    }
      

  5.   

    看看这个,兄弟:
    private void ininAuthorityTree()
            {
                int ParentID = -1;
                DataTable dt = new BusGroup().getTree(ParentID);
                tree1.Nodes.Clear();
                tree1.BeginUpdate();
                foreach ( DataRow myrow in dt.Rows)
                {                TreeNode rootNode = new TreeNode(myrow["CommandText"].ToString().Trim(), 0, 0);
                    rootNode.Tag = myrow["ID"].ToString().Trim();
                    tree1.Nodes.Add( rootNode);
                    initTree( Convert.ToInt32( myrow["ID"]), rootNode);
                }
                tree1.EndUpdate();
            }      
            private void initTree( int ParentID ,TreeNode childNode)
            {
                DataTable dt = getTree(ParentID);
                foreach (DataRow myrow in dt.Rows)
                {
                    TreeNode rootNode = new TreeNode(myrow["CommandText"].ToString().Trim(), 0, 0);
                    rootNode.Tag = myrow["ID"].ToString().Trim();
                    childNode.Nodes.Add(rootNode);
                    initTree( Convert.ToInt32(myrow["ID"]), rootNode);
                }
            }
      

  6.   

    Knight94(愚翁) ,您好,您是高手,您说先获得当前节点,然后判断当前节点是第几层,如果是第一层,就屏蔽添加;如果是第二层就允许添加。可否具体一些吗,我在这方面不熟悉啊,谢谢了!
      

  7.   

    wlovenet(喝了这杯酒大家就是兄弟),您好,您这BusGroup()是何类啊?另外该如何调用啊?
      

  8.   

    if(this.treeView1.SelectedNode !=null && this.treeView1.SelectedNode.Parent == null)
    {
    MessageBox.Show("Can Add");
    }
    else
    {
    MessageBox.Show("Can Not Add");
    }
      

  9.   

    to 可否具体一些吗,我在这方面不熟悉啊,谢谢了!Sample code as follows:// in your treeview mouse-down event 
    TreeNode tnCurrent = yourTreeView.GetNodeAt( e.X, e.Y );
    if( tnCurrent != null )
    {
        if( tnCurrent.Parent == null )
        {
             // in the first level
             btnNew.Enabled = false;
        }
        else
        {
             // in the other level
             btnNew.Enabled = true;
         }
    }// you can add new node in "btnNew" click event
      

  10.   

    所有第一层的根结点设置Tag为1,添加子节点的时候做判断://判断条件:
    //1.当前结点不为null
    //2.当前结点不是第一级的结点
    //3.当前结点是第一级结点,以Tag=1判断
    if(this.treeView1.SelectedNode !=null && 
      this.treeView1.SelectedNode.ParentNode!=null && 
      this.treeView1.SelectedNode.ParentNode.Tag=1)
    {
      //添加结点
    }
      

  11.   

    节点的ID是命名规则,
    0-----------------------ID:0
       01---------ID:0.0
       02---------ID:0.1
       03---------ID:0.2
    1-------------------ID:1
       11---------------ID:1.0
       12---------------ID:1.1
      

  12.   

    kssys() 您好,程序调试出错D:\节点层数\节点层数\Form1.cs(190): “System.Windows.Forms.TreeNode”并不包含对“ParentNode”的定义
      

  13.   

    问题解决了。Knight94(愚翁),您是高手,以后多多向您学习!