例如treeview有2个跟节点,每个根节点下一N个子节点,如何判断用户点击的是第一个跟节点下的子节点?

解决方案 »

  1.   

    private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
            { 
    if(e.Node.Level==1)//这个条件 
              MessageBox.Show(treeView1.SelectedNode.Tag.ToString());          
            } 
      

  2.   

    private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
            { 
    if(e.Node.Level==1)//这个条件怎样写  
              MessageBox.Show(treeView1.SelectedNode.Tag.ToString());          
            } 
      

  3.   


     TreeNode node=new TreeNode("子结点");
                node.Name = treeView1.Nodes[0].Name + treeView1.Nodes[0].Nodes.Count;//子结点的Name永远=它的上级节点的Name+它的上级节点的子结点数
                treeView1.Nodes[0].Add(node);            //然后判断时用,这里根节点1的name为P1 而根节点2的Name为P2
                //node为当前选择节点
                if (node.Name.StartsWith("p1"))
                {
                    //跟节点1的
                }
                else if (node.Name.StartsWith("p2"))
                {
                    //跟节点2的
                }
                //以此类推
      

  4.   

    不难吧!
    TreeNode node = treeNode1.SelectedNode;
    if(node == null || node.Parent == null) return;return node.Parent.Nodes[0] == node;//即为父节点的第一个子节点
      

  5.   

    --判断用户点击的是第一个跟节点下的子节点--
    上面看错了,不好意思!string parentNodeText = node.FullPath.Split(tv.PathSeparator).GetValue(0).ToString(); //得到顶级父节点Text
    return parentNodeText == tv.Nodes[0].Text;
      

  6.   

    第一个方法是获取该节点的根节点,然后进行比较
            private void treeView1_NodeMouseClick( object sender, TreeNodeMouseClickEventArgs e )
            {
                TreeNode node = e.Node;            while ( true )
                {
                    if ( node.Parent != null )
                    {
                        node = node.Parent;
                    }
                    else
                    {
                        //此时的node就是其根节点
                        //怎么判断是根节点1还是根节点2你自己决定
                        //可以使用 node.Text,或者node.Name,或者node.Index
                        //推荐使用node.Name
                        MessageBox.Show( node.Text );
                        break;
                    }
                }
            }第二个方法就是用使用楼上的方法,但有个前提是两个根节点的Text不能相同,推荐使用该方法
    node.FullPath属性是从根节点开始到当前节点所有Text的组合,默认用\连接,也可以通过treeview.PathSeparator改变其连接符(分隔符)
      

  7.   

     private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
            {
                if (e.Node.Level == 1 && e.Node.Parent.Handle == treeview.Nodes[0].Handle)//这个条件 
                    MessageBox.Show(treeView1.SelectedNode.Tag.ToString());
            }
      

  8.   

      private void tree_View_MouseDoubleClick(object sender, MouseEventArgs e)
            {
                
                TreeNode tn = new TreeNode();
                tn = tree_View.SelectedNode;
                if (tn.Parent.Nodes.ToString()== "每一个结点的标识")
                {
                    MessageBox.Show(tn.Text);
                }
            }     
      

  9.   

    如果用户是左键点击,直接判断Treeview的SelectedNode
    TreeNode parentNode = treeView1.SelectedNode.Parent;while(parentNode.Parent != null)
    {
       parentNode = parentNode.Parent;
    }return treeView1.Nodes[0] == parentNode;
    如果用户是右键点击,就稍微麻烦的,需要自己获取点击的节点TreeNode selectedNode = treeView1.GetNodeAt(
             treeView1.PointToClient(Control.MousePosition));TreeNode parentNode = selectedNode.Parent;while(parentNode.Parent != null)
    {
       parentNode = parentNode.Parent;
    }return treeView1.Nodes[0] == parentNode;