滚动条的自动滑动

Posted

技术标签:

【中文标题】滚动条的自动滑动【英文标题】:auto sliding of Scrollbars 【发布时间】:2012-12-22 07:31:04 【问题描述】:

在我的 Winforms 应用程序中,我有一个用户控件,它用作“屏幕”来绘制各种 2D 形状。 我已将其“AutoScroll”属性设置为 true,并且当您缩放屏幕时滚动条可以正常工作(即用户控件) 现在,当我选择任何形状(如矩形或圆形等)并将其移动以使其超出屏幕的可见部分时,我希望相应的滚动条自动滑动以保持该形状在屏幕的可见区域上。 我需要设置滚动条的任何其他属性吗??

【问题讨论】:

【参考方案1】:

我认为不创建自己的方法是不可能实现的。

您可以通过以下方式设置滚动条位置:

this.VerticalScroll.Value = Y;

那么你必须通过以下方式找出你的Rectangle的位置:

Rectangle.Location.Y;

所以这应该适用于您的垂直滚动条:

this.VerticalScroll.Value = Rectangle.Location.Y;

横向:

this.HorizontalScroll.Value = Rectangle.Location.X;

结合 MouseDown-Event 就可以了。

【讨论】:

感谢您的提示。我没有给出 Rectangle 的值,而是将水平和垂直滚动的值增加了一个固定的量,直到鼠标被移动。它奏效了。【参考方案2】:

看看here at the MSDN documention 究竟是什么AutoScroll 属性是什么和做什么。它只会使容器具有大于其可见边界的虚拟大小。它实际上并没有为你做滚动。

如果您希望控件在用户拖动形状时随用户“移动”,您必须自己捕捉该动作并手动滚动控件。我建议从 MouseDown 和 MouseMove 事件开始。您需要一些逻辑来确定何时需要滚动以及实际滚动多少。

【讨论】:

以上是关于滚动条的自动滑动的主要内容,如果未能解决你的问题,请参考以下文章

带滚动条的div如何实现内容滑动,新手不懂,求高手支招

请教CGridCtrl控件的自动滚动条设置

RF中滚动条的操作方法小结

mfc滚动条的相关问题

java中JScrollPane不显示水平滚动条的解决办法

鼠标不动,滚动条自动滚动,页面抖动