|
邀请回答
马上注册,享受更多特权
您需要 登录 才可以下载或查看,没有帐号?立即注册 ![](source/plugin/zhanmishu_wechat/template/static/img/wechat_login.png)
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(); }}
|
上一篇: 汇川GL20刀片扩展IO上市了么?价格怎么?下一篇: 叩响c#之门
|