如果写了TreeView中的click或者doubleclick事件,哪怕在滚动条位置也属于TreeView会触发事件,我调试发现sender是不能区分操作在滚动条还是Item上的,求助该如何区分?

解决方案 »

  1.   

    在MouseDown中判断鼠标位置应该可以吧比如:    Private Sub Tree_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
            Dim tree As TreeView = CType(sender, TreeView)
            Dim n As TreeViewHitTestInfo = tree.HitTest(e.Location)
            If n.Node IsNot Nothing Then
                If n.Node.Bounds.Contains(e.Location) Then                MsgBox("Node")
                End If
            End If
        End Sub
      

  2.   

      private void treeView1_Click(object sender, EventArgs e)
            {
                Rectangle _Rect = treeView1.RectangleToScreen(new Rectangle(0,0,0,0));            int _X=Cursor.Position.X - _Rect.X;
                int _Y=Cursor.Position.Y - _Rect.Y;            TreeNode _Node = treeView1.GetNodeAt(_X, _Y);            if (_Node != null && _Node.Bounds.Contains(_X, _Y))
                {
                    MessageBox.Show(_Node.Text);
                }        }不知道是不是你要的意思 doubleclick 也一样
      

  3.   

    上次写错了,控件是ListView, 所以从Treenode上去考虑的好像都不行哦
      

  4.   

    不知道你想要什么,listView如果出现滚动条不会触发Click 事件啊
      

  5.   

    有没有方法得到Listview的scrollbar对象或者得到它的区域呢
      

  6.   

    描述的场景就是帖子中的意思,就是控件不时treeview而是listview,发帖前没看清楚,进入的事件为PreviewMouseLeftButtonDown和MouseDoubleClick
      

  7.   

    ListView滚动条根本上不会到单击或者双击事件中
      

  8.   

    我的会啊,我是WPF,应该没区别吧