Winform界面布局-容器内的控件适应容器

来源:互联网 发布:sql server if exists 编辑:程序博客网 时间:2024/05/05 12:14

由于用户改变界面大小或者程序在不同分辨率的屏幕下运行,都需要我们的程序界面能够根据实际大小重新布局。

winform控件有两个属性Anchor、Dock可以设置容器内的控件的大小或位置适应容器的大小。当容器大小改变时,容器的子控件的大小随之变化。但是我们的子控件如果变的太小时,反而影响了使用的效果。

例如form中包含一个Textbox和Button。Textbox的Anchor设置为top left right,这样textbox的大小就会跟着form变化而变化,宽度甚至可以一直缩小到0。button 的anchor属性设置为top right。button大小不变,但到form右边框的距离保持不变。

这样,不管用户怎么改变form大小,form中的控件都能随之改变,而不会产生大片的留白了。

但是问题又随之而来了:textbox随着form变的太小了,输入也不方便啊。甚至当form小到一定程度,连button也会无法完全显示了。即时我们对form的autoscroll设置了true,form也不会出现滚动条,这是因为内部控件大小在随着form的改变而改变。

所以我们在使用anchor,dock使得控件随容器变化而变化的同时,还要为控件设置一个最小尺寸,当容器使得内部控件小于这个尺寸时,内部控件就不在变化,容器也随之出现滚动条。

我找了很久也没找到控件的哪个属性能实现这种效果。于是我做了一个变通的方法。那就是在容器中加一个不铆接或者dock的控件做站位符,让这个站位符的大小为我们所希望的容器的最小的尺寸。这样当容器大小改变为比这个站位控件更小时,就会出现滚动条了。这个站位符控件anchor设置为top left;dock设置为none;背景颜色要设置成与容器相同的背景颜色;容器autoscroll设置为true;

这下好了,容器内控件可以随着容器变化而变化了,全屏程序任何分辨率下都能完美显示而不出现留白了,最关键的是容器有了最小尺寸,不用担心容器太小或者分辨率不足时有些按钮显示出来了。

原创粉丝点击