zoukankan      html  css  js  c++  java
  • 解决treeview的同一节点单击多次的执行问题

    在使用treeview的AfterSelect函数的时候,单击同一节点多次无响应。
    解决方法:
    将首次单击的节点信息保存到selectTreeNode;
    然后使用click函数,判断单击的节点是否和selectTreeNode一致。如果一致执行。
    关键步骤:
      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_Click(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   
          {       if(node.Text.Equals(selectTreeNode))
                      MessageBox.Show(node.Text);     //触发事件     
          }   
      }   
     
    private void treeView1_AfterSelect_1(object sender, TreeViewEventArgs e)
    {
     selectTreeNode = e.Node.Text.ToString();
    }
  • 相关阅读:
    编译Linux 2.6内核
    C语言学习参考(基础&进阶)
    用户体验为什么如此重要
    北京讲座:软件企业常见问题和系统性解决方法(7月5日)
    《JavaScript权威指南(第6版)》诚征广大读者参与初译稿审校活动!
    有关正则表达式的研究
    关于分页的研究
    四舍五入等一些不常用代码整理
    最简单CSS实现Table细线表格
    vs2005 SP1补丁安装慢
  • 原文地址:https://www.cnblogs.com/zzlp/p/4096404.html
Copyright © 2011-2022 走看看