C#窗体内控件大小随窗体等比例变化
一、首先定义全局变量
1 private float X;//当前窗体的宽度 2 private float Y;//当前窗体的高度 3 private bool IsFirst = true;
二、定义一下两个函数
1 /// <summary> 2 /// 将控件的宽,高,左边距,顶边距和字体大小暂存到tag属性中 3 /// </summary> 4 /// <param name="cons">递归控件中的控件</param> 5 private void setTag(Control cons) 6 { 7 foreach (Control con in cons.Controls) 8 { 9 con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size; 10 if (con.Controls.Count > 0) 11 setTag(con); 12 } 13 } 14 //根据窗体大小调整控件大小 15 private void setControls(float newx, float newy, Control cons) 16 { 17 //遍历窗体中的控件,重新设置控件的值 18 foreach (Control con in cons.Controls) 19 { 20 21 string[] mytag = con.Tag.ToString().Split(new char[] { ':' });//获取控件的Tag属性值,并分割后存储字符串数组 22 float a = System.Convert.ToSingle(mytag[0]) * newx;//根据窗体缩放比例确定控件的值,宽度 23 con.Width = (int)a;//宽度 24 a = System.Convert.ToSingle(mytag[1]) * newy;//高度 25 con.Height = (int)(a); 26 a = System.Convert.ToSingle(mytag[2]) * newx;//左边距离 27 con.Left = (int)(a); 28 a = System.Convert.ToSingle(mytag[3]) * newy;//上边缘距离 29 con.Top = (int)(a); 30 Single currentSize = System.Convert.ToSingle(mytag[4]) * newy;//字体大小 31 con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit); 32 if (con.Controls.Count > 0) 33 { 34 setControls(newx, newy, con); 35 } 36 } 37 }
三、给窗体添加事件
1 private void Form1_Load(object sender, EventArgs e) 2 { 3 X = this.Width;//获取窗体的宽度 4 Y = this.Height;//获取窗体的高度 5 setTag(this);//调用方法 6 }
这里需要注意一下,是否第一次运行程序
1 private void Form1_Resize(object sender, EventArgs e) 2 { //如果是第一次运行,需要把下面的if语句取消注释,否则会没反应,其以后再运行或调试的时候,就把它注释即可 3 //if (IsFirst) { IsFirst = false; return; } 4 float newx = (this.Width) / X; //窗体宽度缩放比例 5 float newy = (this.Height) / Y;//窗体高度缩放比例 6 setControls(newx, newy, this);//随窗体改变控件大小 7 }
那么,一个简单的窗体改变大小,其里面的控件会根据其窗体等比例改变,就不会出现格式乱套的情况了。
转载于:https://www.cnblogs.com/scc-/p/10831357.html
C#窗体内控件大小随窗体等比例变化相关推荐
- VB根据窗体自动调整窗体内控件大小 注:实用,可以直接引用
代码如下: Option Explicit Private ObjOldWidth As Long '保存窗体的原始宽度 Private ObjOldHeight As L ...
- C#如何实现窗体控件大小随窗体大小变化(包括字体)
如图,拖动窗体即可改变控件大小(包括字体) 窗体尺寸:345*315 窗体尺寸:603*509 项目资源如下 源码如下 using System; using System.Collections.G ...
- wpf 控件大小随窗体大小改变而改变
WPF可以直接通过设置图形类控件的水平和垂直Alighment为Stretch实现 用一个ViewBox装上所有的Window内容然后当window缩放时就可以一起放大缩小了 ViewBox的显示机制 ...
- VC/MFC 控件置顶 窗体内控件置顶
窗体内指定某个控件置顶,使用SetWindowPos函数.但不能这样用 ::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOS ...
- MFC Tab背景颜色及窗体内控件背景颜色更改
整体效果图如下: 1.Tab标签页改变背景颜色 主要参照的是以下链接中的案例进行的修改,有需要的可以参考:http://download.csdn.net/detail/u014272404/9797 ...
- C# Winform Panel 内控件大小不随Panel大小改变设置
(1)将Anchor属性设置为:None (2)将AutoSize属性设置为:False 不过还存在一个问题点,就是Button的位置还是会随着Panel大小变化而改变.
- access窗体转换html,Access窗体之间控件的传值三种方式
Access窗体间的数据是如何传递的?前面有发过子窗体的数据传递.今天讲解3种方法传递窗体里的数据: 如有窗体"传递窗体"和"接收窗体"两个窗体,通过" ...
- matlab GUI窗口最大化,以及控件大小和字体自适应
1.GUI 窗口最大化 双击除控件外的空白处(视图)>属性检查器>resize>on即可. 设置完这个,当放大的时候,会发现我们控件的位置没有变化.此时我们需要设置一个. 工具> ...
- 控件-Win Forms窗体控件
在项目开发中,界面设计是一个很重要的方面.好的界面应该使操作者容易掌握.赏心悦目,把操作看作是一种享受而不是负担.Visual C#.Net提供了丰富的控件,大大简化了界面设计过程. 在桌面应用程序中 ...
最新文章
- C#Array(数组) 一维、多维数组
- Network Request Failed
- R语言入门(3)——R包的使用
- DVWA模块使用教程(二)
- [每日一氵] Python 写程序专用 log 分享
- 富爸爸系列:富爸爸穷爸爸实践
- 操作系统经典独木桥问题
- 世界顶级公司的前端面试都问些什么
- 2019互联网行业面试资料合集
- http劫持的原理与过程,HTTP被劫持怎么办?
- 山东理工大学pta答案 C语言,山东理工大学高分子化学题库附答案.docx
- 《千与千寻》高清下载
- quartz集群模式下qrtz_triggers表trigger_state变ERROR分析
- python开发可以用idea吗_IntelliJ IDEA 开发Python配置
- 产品群面:在无领导小组讨论中脱颖而出!
- 三坐标检测之工件检测选择合适测针
- Photoshop动画制作
- 《JavaWeb从入门到改行》多重外键关系在java中的处理方案
- 如何选择适合自己门店的收银系统呢?
- 中国石油大学《微观经济学》第二次在线作业
热门文章
- 从 github 执行 git clone 一个大的项目时提示 error: RPC failed
- [MySQL]--gt;查询5天之内过生日的同事中的闰年2月29日问题的解决过程
- 【C语言学习】国嵌21__指针基础
- ASP.NET温故而知新学习系列之ASP.NET多线程编程—.NET下的多线程编程应用程序域(七)...
- Exchange 默认数据库删除问题
- rocksdb写放大_Rocksdb的优劣及应用场景分析
- java的部署目录在哪里_Java:Tomcat的部署实例之资源目录
- Redis分布式锁的实现原理
- leader选举的原理
- PrepareStatement 和Statement 的区别?