WinForm进行开发
开发机器分辨率为:1024 * 768  
在主界面的 BackgroundImage 设置为一幅流程图, 在流程图上放几个按钮,并把主窗口设置为最大化。
在 分辨率为:1024 * 768  的机器上进行窗口的最大化时正常,
但是在大于 1024*768 这个分辨率 的机器上进行 窗口的最大化时, 按钮的大小和位置不会改变,使程序主界面运行后失真很严重,设置主窗口的 Anchor属性没有效果。
正常情况下,主窗口都会设置为最大化的。如果把主窗口的大小固定是很不合情理,那么这种窗口大小改变时,按钮的大小和位置如何做相应的调整呢?
这个问题让我晕倒了,由于知识有限,只能求救高手指点了!

解决方案 »

  1.   

    把Anchor属性玩熟,就行了!
    文本框自适应窗体大小,那么文本框的Anchor属性设置左、上、右。这样保持与窗体左右上距离不变。
    按钮自动居中,按钮的Anchor属性只设置为上,然后选择居中。窗体变大后按钮仍可居中。
    再不行,程序控制控件的Location,Size
      

  2.   

    OnSizeChange里面改动控件位置,少的话一个个改 ,多的话按放大倍率改
      

  3.   

    Anchor + Dock 啊,设置一下.
      

  4.   

    可以把按钮放在panel里面设置panel的dock属性
      

  5.   

    Anchor 和 Dock  这两个的各个属性值我都试过N+1次了,还是解决不了问题。主要是:
    按钮的大小跟不上窗口的变化,还有就是位置有点不对想问一下一下高手,在项目的主窗口中如果没有放一个流程图之类的,显得主窗口空空的,没有什么内容。在流程图又不只能看,而且还要用户点击某个模块能进入相应的窗口。虽然答案不是我想要的,但还得多谢楼上各位,我只是想听一下高手们在实际的项目中这种情况是如何做的?
      

  6.   

    tableLayoutPanel 这个我也试用了, Anchor 只能设置为 top ; dock 设置为none 这样可以实现按钮的大小跟上窗口的变化,可是不能把流程图覆盖整个主窗口。Anchor 和 Dock这两个属性改其它值就 使按钮的大小跟不上窗口的变化,使位置也有点跟着对不上。高手们可以测试一下就知道了。
      

  7.   

    如果简单设置属性不能满足需求,就动态控制Location和Size吧
      

  8.   

    用一个Panel强行居中,主窗口大小随意调整,不就完了?
      

  9.   

    要想Size和position同比例变化,就只有动态控制了! foreach (Control s in this.Controls)
                {
                    s.Location = new Point(s.Location.X * 1, s.Location.Y * 1);
                }只提供个思路,我没试过哦!你试试看行不?
    比例就按照大屏幕高除以小屏幕高等等的
      

  10.   

    既然你说了图片放大后会失真 那么就把拖一个panel
    设置背景图为该图片并固定好大小,使之显示在窗体中间
    调整窗体背景色,使其和图片背景色一致即可
      

  11.   

    另外 panel 的 Anchor 为 none,BackgroundImageLayout 为 Center