之前发过通样要求的一个帖子,估计是要求没有表达清楚,我发一贴吧,还是100分如何让做好的winform界面在不同的分辨率下显示效果相同? 
比喻在1440*900的分辨率下做的界面,拿到800*600下,有些空间被遮住了,显示不出来,还有好多控件错位了, 
如何解决?我在详细描叙下我的需求吧:我的要求是这样的,我的所有窗体都是继承与一个基本窗体的,而基本窗体继承与form,我想在基本窗体里加上一个方法,然后再基本窗体的Load事件里调用这个方法或在构造函数里调用,就实现窗体里的控件自动按不同的分辨率调整大小,去适应窗体。 
网上的那个根据分辨率改变窗体里空间的size和location这两个属性的做法也不能达到我的要求

解决方案 »

  1.   

    这个比较繁杂1. 了解各个窗体常熟, 比如边框宽度, 标题栏高度, 滚动条宽度/高度, 等等, 这个可以看 System.Windows.Forms.Systeminfo 下的量, 这些量是根据当前用户配置获得, 计算客户区大小时需要这些数值.2. 深刻理解 dock, anchor 的含义, 尤其是在窗口大小改变时的行为方式. 窗口(或控件)大小改变时, 滚动条的处理.3. 规定一个布局规则, 也就是各个 layout engine 所作的.4. 在窗口加载过程中, 根据上述规则重新排布控件位置和大小, 永远不要相信设计时的位置和大小.// 见到好几个项目设计时的布局都很乱套, 控件都是随便放置的, 可运行时整齐划一. 这个需要修炼啦,
    // 借用 Petzold 在 programming windows 中一句:// Windows is a complex system; put a programming layer on top of the API doesn't eliminate the complexity - it merely hides it, Sooner or later that complexity is going to jump out and bite you in the leg.
      

  2.   

    用MDI窗体,当因为分辨率改变时看不到时,用滚动条,有些控件可以缩小、放大,不影响外观,但是有些控件一但大小改变,就会变的很难看,像GridVeiw之类的就把它的location改四个方向的