我想实现这样的功能:比如有一个Panel ,Panel里面有一个button,button左上角的位置是在Panel的中心如果改变Panel的大小,也就是Resize的时候,我希望button的位置还是在Panel的中心也就是说,我需要button的位置是按比例来算的,不是绝对的距离Anchor和Dock我都试过,可是都不理想我也想过在Panel的SizeChanging事件中进行一些改变,但是还是有一点问题出现不知道哪位大哥实现过这样的功能,感激不尽!!!

解决方案 »

  1.   

    那你的button要等比例缩放么?
    假设你的button的宽是btnWitdth,btnHeight。
    你的控件通过ClientRectangle()获取到panel的宽和高为: pnlWidth,pnlHeight。
    那button的
    left = pnlWidth/2 - btnWitdh/2;
    top = pnlHeight/2 - btnHeight/2;
      

  2.   

    大小倒不是太重要,就是位置挺重要的因为一些控件老是会超出Panel的边界,看都看不到了
      

  3.   

    重新计算空间的位置啊
     button1.Location = new Point(Panel.Width/2-button1.Width/2, Panel.Height/2-button1.Height/2);
    Anchor和Dock我实在是用不来
      

  4.   

    SizeChanging事件是正在改变的时候触发,象你这种情况应触发SizeChanged.Panel大小改变之后马上改变button的位置和大小等,你界面如果比较简单,直接写方法就可以了,速度比较快,感觉不到异常.如果是大项目就得做些优化.至于button在pannel中的位置,2楼那样就可以咯!
      

  5.   

    SizeChanging事件是正在改变的时候触发,象你这种情况应触发SizeChanged.Panel大小改变之后马上改变button的位置和大小等,你界面如果比较简单,直接写方法就可以了,速度比较快,感觉不到异常.如果是大项目就得做些优化.