问题描述:
WinForm窗体中有三个Panel,Dock分别设置为Top、Top、Fill,
窗体最小化或被其他窗体覆盖,运行一段时间后,切换回窗体,发现窗体中的这三个Panel都整体往上移了100px。在一次调试过程中也发现了该问题,然后经过进一步调试发现这个时候的窗体的DisplayRectangle的Y坐标为-100,AutoScrollPosition的值为(0,-100)。另外,我发现窗体默认的垂直滚动条的Maximum的值为100,所以我猜想是不是由于垂直滚动条滚到了最大值的原因。如果是这个原因,那为什么垂直滚动条会自动滚动到最大值。窗体的AutoScroll属性默认是设置为Fales,所以无论如何窗体的滚动条应该不会出现才对,但是像我上面描述的情况就是会偶尔发生。令我更不可思议的是,当我的程序出项上述问题时,其他运行着的.net应用程序也会收到影响,出现同样的情况,即里面的控件都整体上移了100。不知道大家是否遇到过类似问题,我想了很长时间都不知道问题的根本原因是什么?

解决方案 »

  1.   

    有遇到类似问题
    使用Anchor效果更好
      

  2.   

    按楼主说的就是怪事了。一般来说影响Dock等行为的会是Control.Padding。楼主看一下是否有地方修改了这个属性的值。
      

  3.   

    我看了一下,确实有一个Panel的Padding设置为了(5,5,5,0)
    但是我看到这个属性的说明,该属性应该只是影响Panel内部控件离Panel的距离,和Panel外部应该没有关系的。
      

  4.   

    已经给微软亚洲研究院的人打了Case,不知道能不能解决。