给TreeView添加了ContextMenuStrip,选中一个节点1,然后在节点2上直接右击弹出ContextMenuStrip,我只能通过TreeView.SelectNode属性获得节点1,而我现在是想在节点2下添加子节点,该怎么做啊?请赐教

解决方案 »

  1.   

    你在mousedown,mouseup中加入事件,判断鼠标按下时所在的节点区域,然后选中此节点,这样菜单就可以响应当前节点了.
      

  2.   


    protected void treeView1_OnMouseDown(MouseEventArgs e)
    {
        treeView1.SelectedNode = treeView1.HitTest(e.X, e.Y).Node;
    } 如果直接用e的坐标有问题,可以用PointToClient函数转换坐标。
      

  3.   


            private void treeView1_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Right)
                {
                    TreeNode node = this.treeView1.GetNodeAt(e.X, e.Y);
                    //选中鼠标右键按下所在的节点
                    this.treeView1.SelectedNode = node;
                }
            }
      

  4.   


     void jcsTreeView1_MouseDown(object sender, MouseEventArgs e)
            {
               System.Windows.Forms.TreeViewHitTestInfo hittestinfo = this.jcsTreeView1.HitTest(e.X ,e.Y);
               if (hittestinfo.Node != null)
               {
                   TreeViewHitTestLocations loc = hittestinfo.Location;
                   if(loc == TreeViewHitTestLocations.Label )
                     MessageBox.Show(hittestinfo.Node.Text);
               }
            }