Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 源码示例

为TreeView控件的Node对象写双击事件代码

时 间:2021-12-23 17:32:34
作 者:   ID:149  城市:温州
摘 要:为TreeView控件的Node对象写双击事件代码。
正 文:

      以下是我使用TreeView控件一点心得,以此抛砖引玉,希望其它不会的程序员能受到启发,也希望我能从您们当中学到点东西!

      大家应该对TreeView控件都不陌生!相信大家都知道,此控件没有节点双击事件,只有节点单击事件(NodeClick)和节点复选事件(NodeCheck)!
      但我们在很多情况下都想实现节点双击的功能,要求当用户双击到节点上才引发,而双击控件上其它非节点的位置时不引发,同样地,还有鼠标右键菜单,当用鼠标右键点击节点才弹出此菜单,未点击到节点时不要弹出此菜单!
      可能已经有许多人已经用其它方法实现了此功能,但我还是要向大家介绍一下我实现此功能的方法,条条道路通罗马,以供大家参考。


当用户点击一个节点时,节点和控件的事件顺序如下(其它事件与此无关,就不用列出了,下同):
NodeClick()
TreeView_Click()


当用户双击一个节点时
NodeClick()
TreeView_Click()
TreeView_DbClick()


当用户鼠标右键点击一个节点时
NodeClick()
TreeView_MouseUp()
TreeView_Click()


由以上有顺序我们就可以写出相应的控制代码实现了

Private mNodeClick As Integer '记录节点是否被单击了

'在节点单击事件里添加以下代码
Private Sub trvNode_NodeClick(ByVal Node As MSComctlLib.Node)
    mNodeClick = 2 '节点被点击,单击一个节点会先发生节点单击事件,再发生控件单击事件
    ...
End Sub

'在控件单击事件中添加如下代码
Private Sub trvNode_Click()
    mNodeClick = mNodeClick - 1 '控件被点击,记一次数,如果标志为1代表节点被单击,否则节点未被点击
End Sub

'在控件双击事件中添加以下代码
Private Sub trvNode_DblClick()
    If mNodeClick = 1 Then '如果节点被点击后只发生了一次控件被点击的事件,则说明用户双击了节点,否则用户双击了控件的非节点位置
        mNodeClick = 0 '重新开始
        '写节点双击事件代码
    End If
End Sub

以上代码就实现了节点双击事件的控制。


'节点右键菜单
Private Sub trvNode_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = vbRightButton Then
        If mNodeClick = 2 Then '鼠标右键点击了节点,节点被点击后,没有发生控件点击事件
   '此时就可以弹出节点的右键菜单了
            PopupMenu menuRight, , , , menuRDesign
        End If
    End If
End Sub

以上代码就实现了节点右键菜单的功能。


例子也是在别人的例子基础上上改的,欢迎大家学习。


示   例:

点击下载此附件



Access软件网官方交流QQ群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助