查看: 811|回复: 1
收起左侧

[资料分享] C#快速自适应布局

邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
自适应窗体一直是个老问题,又是一个经常性问题,下面用代码解决winform窗体自适应问题
实现方式:
会将from装进Panel里面对控件进行自动计算。
在项目中添加AutoWindowsSize.cs类,内容如下:
           优势:不需要在Form1中添加任何布局,直接将类复制到项目中,在form1代码中调用即可,页面大小会自动计算,修改方便,速度快。
           缺点:1.页面如果是背景图片,页面特别快的时候,页面会有闪烁情况。
                     2.如果Form1中有背景图片,会直接显示成纯图的背景,原因是在AutoAdaptWindowsSize类中会创建一个panel,panel背景颜色会自动设置,而pannel的纯色背景会覆盖掉Form1的背景,本质上是panel的背景。所以可以给Panel设置背景图片或将panel背景色修改为Transparent,如:Win_Panel1.BackColor = Color.Transparent;
这样在展示中可以正常的显示背景图片。
其次:因为修改窗口需要对界面重新绘制,在拖动窗口时会出现比较严重的闪屏现象,需要在Form1的设计器中添加任意位置添加如下代码:
using System.Windows.Forms;protected override CreateParams CreateParams{    get    {        CreateParams cp = base.CreateParams;        cp.ExStyle |= 0x02000000;        return cp;    }}

AutoWindowsSize.cs类代码太多,此处不做展示,附件里有源码。

创建结束以后,在Form1类中做如下操作:
1.引入using AutoWindowsSize;
using AutoWindowsSize;
2.在Form1类中设置全局变量。
AutoAdaptWindowsSize new AutoSize;
3.在Form1_Load添加如下代码。
private void Form1_Load(object sender, EventArgs e){       AutoSize = new AutoAdaptWindowsSize(this);}
4.创建Form1_SizeChanged事件函数,如下:
private void Form1_SizeChanged(object sender, EventArgs e){    if (AutoSize != null)        {            AutoSize.FormSizeChanged();        }}


















C#自适应布局Demo.rar

831.87 KB, 下载次数: 8

售价: 20  [记录]

点评

感谢分享  发表于 2023-2-11 18:03




上一篇:汇川GL20刀片扩展IO上市了么?价格怎么?
下一篇:叩响c#之门

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部