c# - 使用 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);
}
请有人可以帮助我吗?
解决方案
我找到了一个解决方案并且它有效:
treeViewFilters.Location = new Point(treeViewFilters.Location.X, -vScrollBarFilters.Value);
推荐阅读
- excel - GetPivotData #REF 错误,数据格式问题?
- ios - UICollectionViewCell GetCell 被调用两次
- ibm-cloud - 如何检索 IBM Watson Discovery 服务的密码?
- sql - 从 R 运行 .sql 文件
- sql - SQL Server 查询检索到不正确的值
- sql - SQL 将长整数缩短为 4 或 5 个字符的数字,带两位小数
- c++ - uint8_t 转为字符串,导致无输出 C++(初级程序员)
- android - Android,Firebase Recycler Adapter 未查询数据库
- mysql - 如果表中没有数据,如何为表中的列赋予默认值?
- objective-c - iOS 9 / 10 -> 如何检查空闲/可用空间