可以去微软下一个treeview控件的事例,可以实现各种功能

解决方案 »

  1.   

    使用HitTest得到当前节点
    Private Sub tvwMPTree_MouseUp(Button As Integer, Shift As Integer, _
        x As Single, y As Single)
        If Button = VK_RBUTTON Then      'right button is clicked
            Set CurNode = tvwMPTree.HitTest(x, y)
        endif
    End Sub
      

  2.   

    刚好我做过了。
    在MOUSE——DOWN事件里设置一个右建标志(不是右建就清除标志),然后在NODE——CLICK事件里处理就行。
      

  3.   

    放在mousedown中,应该有selectnode这个属性的!
      

  4.   

    第二问中
    使用tooltip存储提示信息
    在mousemove中显示tooltip
      

  5.   

    '声明一个模块级变量
    Private mcSel As Node
    Private Sub tv_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
        Static fNoPop As Boolean
        If Not mcSel Is Nothing Then
            If mcSel.Key= "关键" Then
                If Button = vbRightButton Then
                    If fNoPop = False Then
                        PopupMenu 菜单
                        fNoPop = True
                    Else
                        fNoPop = False
                    End If
                Else
                    fNoPop = False
                End If
            Else
                fNoPop = False
            End If
        End If
    End SubPrivate Sub tvTrain_NodeClick(ByVal Node As MSComctlLib.Node)
        Set mcSel = Node
    End Sub
      

  6.   

    谢谢你们了,还真快
    to:nanhill(米) 有连接地址吗?
    to:sfireball(阿飞) CurNode是TREEVIEW自带的吗,没有定义
    to:tanyx(不知道) 你的方法到是可以,我还没试,我也这样想过,有没有简单的方法,TREEVIEW应该不会这么烂吧
    to:superjs(真剑神) 我是想最好右击接点时,让此接点选中
    to:sfireball(阿飞) 我是用了TOOLTIP,但要判断鼠标移到了哪个BUTTON
      

  7.   

    '声明一个模块级变量
    Private mcSel As Node
    Private Sub tv_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
        If Not mcSel Is Nothing Then
            If mcSel.Key= "关键" And Button = vbRightButton Then PopupMenu 菜单
        End If
    End SubPrivate Sub tv_NodeClick(ByVal Node As MSComctlLib.Node)
        Set mcSel = Node
    End Sub
      

  8.   

    呵呵,
    Dim CurNode As Node
    自己定义的变量
    用来存储点击的节点
    上面的代码只是一个片断,说明问题用的
      

  9.   

    Private Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    If Button = vbRightButton Then
       If TreeView1.SelectedItem Is TreeView1.HitTest(x, y) Then
          menuPopupItem.Caption = TreeView1.SelectedItem.Text
          Me.PopupMenu menuPopup
       End If
    End If
    End Sub
      

  10.   

    不愧是斑竹,按你的方法是基本搞定
    menuPopupItem.Caption = TreeView1.SelectedItem.Text这句什么意思,我没用这句,
    不知第二个问题有什么好办法吗?争取明天结帐
          
      

  11.   

    用playyuer(女㊣爱)的办法,在没选中接点附近右击时,有点跳,选中的接点跳来跳去的
      

  12.   

    看下面的源码,我们就是这样做的。
    void CBhjkgView_Left::OnRclick(NMHDR* pNMHDR, LRESULT* pResult) 
    {
      POINT point;
      ::GetCursorPos(&point);
       m_PopMenu.GetSubMenu(2)->TrackPopupMenu(TPM_LEFTALIGN,      point.x,point.y,this,0);
    *pResult = 0;
    }
      

  13.   

    呵呵,这段代码是从我做的工程中摘录的,肯定行。
    CTreeView 本身支持右键事件的,不必用mouse 等底层的事件
      

  14.   

    to ltpao(啊炮): 我是用的第二次的代码 mcSel.Key= "关键" ,关键是什么?去掉后,不是很理想
    to xltang(深流):你的VC代码我看了,没试,应该说弹出菜单是没问题,但是是TREEVIEW的任何地方都会弹出,没有根据选择的接点弹出
      

  15.   

    menuPopupItem.Caption = TreeView1.SelectedItem.Text'仅仅是确认一下你单击的是哪一个节点!
      

  16.   

    foxmsdn(天堂雪狐) 能不能具体点,今天结帐