我有一个Windows窗体应用程序,它使用FlowLayoutPanel控件来显示动态构建的图片框。我已经启用了拖放效果,因为他们可能想要重新排序它们,这只适用于几个图片框(现在屏幕显示大约6个)但是如果有更多你试图拖动控件下面的项目它不会滚动,因此您无法将当前在屏幕上的图像(例如图像4)放在低于可见的图像(例如图像13)。
我已经看过应该使用ScrollControllIntoViewMethod的几个帖子,我在几个地方尝试过不成功。
谢谢!
答案 0 :(得分:2)
这是我最终做的事。
在DragLeave事件上创建事件
获得控制的位置
计算控件的高度以获得下边界。
检查鼠标位置,如果在界限之上,则用常量值中的值更改垂直滚动(或水平滚动)。
private void thumbFlow_DragLeave(object sender, EventArgs e)
{
int BegY_ThumbFlow = this.thumbFlow.FindForm().PointToClient(this.thumbFlow.Parent.PointToScreen(this.thumbFlow.Location)).Y;
int thumbFlowBound_Y = this.thumbFlow.Height + BegY_ThumbFlow;
int mouseY = this.thumbFlow.FindForm().PointToClient(MousePosition).Y;
while (mouseY >= thumbFlowBound_Y)
{
thumbFlow.VerticalScroll.Value = thumbFlow.VerticalScroll.Value + DRAG_DROP_SCROLL_AMT;
mouseY = thumbFlow.FindForm().PointToClient(MousePosition).Y;
thumbFlow.Refresh();
}
while (mouseY <= BegY_ThumbFlow)
{
thumbFlow.VerticalScroll.Value = thumbFlow.VerticalScroll.Value - DRAG_DROP_SCROLL_AMT;
mouseY = thumbFlow.FindForm().PointToClient(MousePosition).Y;
thumbFlow.Refresh();
}
}
希望这有助于其他人。