首页 > 解决方案 > 使用 MouseMove 滚动 TreeView

问题描述

我有一个 TreeView 和节点。我想用 MouseMove 事件滚动。几周前我为面板做了这个,但面板有 AutoScrollPosition 属性可以做到这一点,所以它更容易。如何处理没有 AutoscrollPosition 属性的 TreeView ?

我试过这个:

        private void TreeViewFilters_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button != MouseButtons.Left)
        {
            return;
        }
        if ((startPoint.X == treeViewFilters.PointToClient(MousePosition).X) && (startPoint.Y == treeViewFilters.PointToClient(MousePosition).Y))
        {
            return;
        }

        Point currAutoS = treeViewFilters.AutoScrollPosition; //Problem here
        if (startPoint.Y > treeViewFilters.PointToClient(MousePosition).Y)
        {
            if (startPoint.Y != 0)
            {
                currAutoS.Y = (Math.Abs(currAutoS.Y) + 15);
            }
        }
        else if (startPoint.Y < treeViewFilters.PointToClient(MousePosition).Y)
        {
            currAutoS.Y = (Math.Abs(currAutoS.Y) - 15);
        }
        else
        {
            currAutoS.Y = Math.Abs(currAutoS.Y);
        }

        if (startPoint.X > treeViewFilters.PointToClient(MousePosition).X)
        {
            if (currAutoS.X != 0)
            {
                currAutoS.X = (Math.Abs(currAutoS.X) + 15);
            }
        }
        else if (startPoint.X < treeViewFilters.PointToClient(MousePosition).X)
        {
            currAutoS.X = (Math.Abs(currAutoS.X) - 15);
        }
        else
        {
            currAutoS.X = Math.Abs(currAutoS.X);
        }

        currAutoS = treeViewFilters.AutoScrollPosition; //and here
        startPoint = treeViewFilters.PointToClient(MousePosition);

    }

请有人可以帮助我吗?

标签: c#winformstreeview

解决方案


我找到了一个解决方案并且它有效:

                treeViewFilters.Location = new Point(treeViewFilters.Location.X, -vScrollBarFilters.Value);

推荐阅读