Winforms TreeView,我想在用户拖动和项目时向上/向下滚动。
最佳答案
与上面的几乎相同,但没有那个“顶级”错误,并且在更大的项目中使用起来更简单一些。
将此类添加到您的项目中:
public static class NativeMethods
{
[DllImport("user32.dll", CharSet = CharSet.Auto)]
internal static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
public static void Scroll(this Control control)
{
var pt = control.PointToClient(Cursor.Position);
if ((pt.Y + 20) > control.Height)
{
// scroll down
SendMessage(control.Handle, 277, (IntPtr) 1, (IntPtr) 0);
}
else if (pt.Y < 20)
{
// scroll up
SendMessage(control.Handle, 277, (IntPtr) 0, (IntPtr) 0);
}
}
}
然后只需订阅 TreeView (或您希望在拖/放时启用滚动的任何其他控件/自定义控件)的 DragOver 事件并调用 Scroll() 方法。
private void treeView_DragOver(object sender, DragEventArgs e)
{
treeView.Scroll();
}
关于c# - 拖动时 TreeView 自动滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6034942/