一个组态软件项目,其中一个用来组态图形页的视图窗口需要实现这样一个功能:在该窗口第一次被显示出来时,要求滚动条移动到中间位置。
按照软件的设计结构,只要移动一个Panel的滚动条即可。
要移动滚动条,只要改变Panel的AutoScrollPosition属性即可。
那么,现在的问题是,怎么确定中间位置?
AutoScrollPosition的值是一个Point,那么,现在的问题就是想办法计算出该Point的X和Y值。这才是难点所在。
要说明这个问题,我这里不得不啰嗦啰嗦C#中窗口的滚动条管理机制。
对于一个拥有滚动条的窗口,该窗口的DisplayRectangle属性将被启用,DisplayRectangle描述了该窗口的“虚拟显示区”,也就是通过移动滚动条可以看到的窗口的最大绘图区。用户实时能够看到的那一块区域(实际显示区),使用窗口的Size属性(我们这里只在客户区绘图,所以用它的ClientSize属性)来给出(宽度CX和高度CY)。如下图所示: