C#窗体怎样实现自适应大小(一)
以前用串口助手时,没有发现什么不对劲的地方,但自己写的上位机控件,点击窗口最大化时,界面却没有按相应的比例放大,让人看得很不舒服,其实,知道窗口有自适应这一说法,可在C#里如何实现呢?
在C#编程里,使用布局控件实现窗体的自适应大小,相信很多朋友都用过吧,用过的不要吐糟,没有用过的可以参考参考,谢谢各位狼友。
1 先介绍两个控件 tableLayoutPanel和flowLayoutPanel
这两个控件,在 工具箱---容器 里面
tableLayoutPanel 是列表布局
flowLayoutPanel 是流布局
2 tableLayoutPannel 列表布局
2.1 新建一个窗口Form
2.2 拖一个tableLayoutPanel到窗体上
2.3 将其Dock属性设置为Fill,也就是中间那个区域
这样tableLayoutPanel就会部填充窗口
2.4 选择控件右上角的小三角,可以编辑行和列,在弹出的窗体中设置百分比或者设置固定值,比如说在窗口放大时,有些控件不希望改变大小,就可以在绝对(B)写入固定相素值
可以添加行或列,并设置百分比值或绝对值,也可以选择自动调整大小
2.5 到这里,就可以方便的向列表存放其它控件了
如拖一个 groupBox到第单元格1,然后将其属性 Dock 设置为Fill,这样groupBox1就自动填充满单元格1,如果不想填充满,也可以设置它的anchor属性,让它居中对齐,有空再试试这个功能。
2.5 如果想让控制跨度放置,如下面的textBox
选中控件,ColumnSpan 设置为2,然后将Dock 设置为Fill
如果想要放多个控件,比如单元格1按2个button,就先放一个groupBox,再拖两个button进去,就可以了。
3 如果要自适应屏幕大小,就可以在窗体打开事件中加上下面这段代码
4 总结
- 像我示范的窗体那样有很多groupBox控件的话,是需要用相同的办法在groupBox控件中也加入布局控件进行上面相同的操作,否则就会出现groupBox缩小了,但是groupBox里面的子控件却被覆盖掉而显示不出来的情况。
- 如果想要实现局部放大或缩小,也就是有些地方不希望它改变大小,只希望固定控件去改变大小,这种情况下只需要前面几行固定像素,让希望变化的控件为百分比大小即可.
如下在单元4中,再拖入一个tableLayoutPannel,设置好行列,就可以各放gruopBox,看起很舒服吧。
如果要实现直接自适应屏幕大小可以这样做(在上述窗体设计操作完成后):
在主窗体构造函数末尾或者主窗体Load事件中写上
//获取当前屏幕显示区域大小,让窗体长宽等于这个值,这里不包含任务栏哦
this.Width = Screen.PrimaryScreen.WorkingArea.Width;
//这样窗体打开的时候直接就是屏幕的大小了
this.Height = Screen.PrimaryScreen.WorkingArea.Height;