if (e.Button == MouseButtons.Left)
            {
                TreeNode tn = this.TreeView1.GetNodeAt(e.X, e.Y);
举例说:先选了一个节点后,再点击空白处,还是会打开这个节点,这是为什么?

解决方案 »

  1.   

    to 举例说:先选了一个节点后,再点击空白处,还是会打开这个节点,这是为什么?在空白处的时候,通过GetNodeAt返回的肯定是null,但是你的返回值并没有操作treeview中的selectednode属性,因此会造成如上的现象。所以你可以在
    TreeNode tn = this.TreeView1.GetNodeAt(e.X, e.Y);
    之后加上
    TreeView1.SelectedNode = tn;注意:
    你访问TreeView1.SelectedNode 的时候需要判断它是否有效。
      

  2.   

    if (e.Button == MouseButtons.Left)
    {
       TreeNode tn = this.TreeView1.GetNodeAt(e.X, e.Y);
       if(tn!=null)
       {
         .....
         TreeView1.focus();
         TreeView1.SelectedNode=tn;
       }
       else return;
    }