C# TreeView 节点的双击事件

方法一:(略有缺陷)
在TreeView的 整个树的DOUBLECLICK事件中判断选中节点,但是这个做法有缺点,就是选中一节点后,双击其他的空白地方也是会触发这个节点的双击事件。

方法二:(能够比较好的解决此类问题)  
关键步骤:
  1、根据鼠标位置得到当前活动节点。当然这一步得到的仍然可能在意料之外,因为TreeNode右边的空白位置算作它的区域。       
  2、判断鼠标的位置是否真的在节点上。可以引入一个成员变量来记录鼠标按下去或者弹起来的位置;也可以动态的抓取鼠标当前的绝对位置,然后使用TreeView控件的PointToClient方法换算成空间内部的相对位置,来看是否在节点范围内部。
  private   Point   pi;   
        
  private   void   treeView1_MouseDown(object   sender,   System.Windows.Forms.MouseEventArgs   e)   
  {   
  pi=new   Point(e.X,e.Y);   
  }   
    
  private   void   treeView1_DoubleClick(object   sender,   System.EventArgs   e)   
  {   
  TreeNode   node=this.treeView1.GetNodeAt(pi);   
  if(pi.X<node.Bounds.Left   ||   pi.X>node.Bounds.Right)   
  {   
  this.Text=""   ;     //不触发事件   
  return;   
  }   
  else   
  {   
  this.Text="ggg";     //触发事件   
  }   
  }   

你可能感兴趣的:(treeview)