楼主说的就是表单中的控件,在窗体变换显示器之后最大化,右边多了一大片空白,即普通5/4屏变到16/9。他主要的问题是控件不会随着窗体的尺寸变化而变化,这是一开始就没考虑到的后果,需要改变布局思想来解决。但也有将就一点的办法,即把原来的控件,整体右移,使内容总是居中(这是一般WEB页面的办法),但仍然有浪费。彻底使用所有空间的布局,需要整体考虑,特别是中间那一块要能够动态适应而不致影响内容很难看。
看过我以前代码的都知道,我的表单类定义中总是有Arrage这个自定义方法,那是用于控件布局的,在窗体尺寸变化时根据这个方法伸缩控件(布局中必须保证有一块内容是可以随意伸缩的,另外可以是固定尺寸或按比例分布的),就是为了应付这种场合。后来使用.NET的WPF编程,就发现它的思想也是这样:它的布局有两个阶段,第一阶段是“测量”,即测量各个控件的所需要的尺寸,第二阶段就是“布局”,根据前面算出的尺寸来尝试最合适的摆放位置和实际尺寸。它的算法很好,比我自己的高明很多(有栈式、流式、表格式等等不同的形式和它们的嵌套组合),我自问做不到那样,但相对简单的布局还是可以的,靠放什么上去来迁就一下就是了。
[ 本帖最后由 TonyDeng 于 2013-2-18 00:36 编辑 ]
看过我以前代码的都知道,我的表单类定义中总是有Arrage这个自定义方法,那是用于控件布局的,在窗体尺寸变化时根据这个方法伸缩控件(布局中必须保证有一块内容是可以随意伸缩的,另外可以是固定尺寸或按比例分布的),就是为了应付这种场合。后来使用.NET的WPF编程,就发现它的思想也是这样:它的布局有两个阶段,第一阶段是“测量”,即测量各个控件的所需要的尺寸,第二阶段就是“布局”,根据前面算出的尺寸来尝试最合适的摆放位置和实际尺寸。它的算法很好,比我自己的高明很多(有栈式、流式、表格式等等不同的形式和它们的嵌套组合),我自问做不到那样,但相对简单的布局还是可以的,靠放什么上去来迁就一下就是了。
[ 本帖最后由 TonyDeng 于 2013-2-18 00:36 编辑 ]
授人以渔,不授人以鱼。