博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# winform 根据窗体自动调整控件
阅读量:4948 次
发布时间:2019-06-11

本文共 3302 字,大约阅读时间需要 11 分钟。

一、概述

     本文要实现的功能是:当窗体最大化时,控件的大小可以随窗体一起变化。开发环境,vs2010 c# winform,窗体名称采用默认的Form1.

2、把调整控件大小的方法放到一个类中:FormSetSelfAuto.cs

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Windows.Forms; 6 using System.Drawing; 7  8  9 namespace Kaifafanli10 {11    public class FormSetSelfAuto12     {13         private float X;14         private float Y;15         public float _x16         {17             set { X = value; }18         }19         public float _y20         {21             set { Y = value; }22         }23        //获取控件的width,height,left,top,字体的大小值,存放在控件的tag属性中24         public void setTag(Control cons)25         { 26          //遍历窗体中的控件27             foreach(Control con in cons.Controls)28             {29                 con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size;30                 if(con.Controls.Count>0)31                 {32                     setTag(con);33                 }34             }35         }36        //根据窗体大小调整控件大小 37        public void setControls(float newx,float newy,Control cons)38         { 39           //遍历窗体中的控件,重新设置控件的值40             foreach(Control con in cons.Controls)41             {42             //获取控件tag属性值,并分割后存储字符串数组43                 string[] mytag=con.Tag.ToString().Split(new char[]{
':'});44 float a = Convert.ToSingle(mytag[0]) * newx;//根据窗体缩放比例确定控件的宽度值45 con.Width = (int)a;46 a = Convert.ToSingle(mytag[1]) * newy;47 con.Height = (int)a;//高度48 49 a = Convert.ToSingle(mytag[2]) * newx;50 con.Left = (int)a;//左边缘距离51 a = Convert.ToSingle(mytag[3]) * newy;52 con.Top = (int)a;//上边缘距离53 Single currentSize = Convert.ToSingle(mytag[4]) * newy;54 con.Font = new Font(con.Font.Name,currentSize,con.Font.Style,con.Font.Unit);55 if(con.Controls.Count>0)56 {57 setControls(newx,newy,con);58 }59 60 }61 }62 public void form_Resize(Form fr)63 {64 float newx = (fr.Width) / X;65 float newy = (fr.Height) / Y;66 setControls(newx, newy, fr);67 fr.Text = fr.Width.ToString() + " " + fr.Height.ToString();68 }69 }70 }
FormSetSelfAuto.cs

3、在窗体Form1中的调用方法

Form1的代码如下所示:

1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace Kaifafanli11 {12     public partial class Form1 : Form13     {14         public Form1()15         {16             InitializeComponent();17         }18 19        20         FormSetSelfAuto fa = new FormSetSelfAuto();21         private void Form1_Load(object sender, EventArgs e)22         {23             this.Resize += new EventHandler(Form1_Resize);24             fa._x = this.Width;25             fa._y = this.Height;26             fa.setTag(this);27         }28 29         private void Form1_Resize(object sender, EventArgs e)30         {31             fa.form_Resize(this);32         }33     }34 }
Form1

 

转载于:https://www.cnblogs.com/net064/p/5660740.html

你可能感兴趣的文章
Android应用程序与SurfaceFlinger服务的连接过程分析
查看>>
coco2dx服务器简单例子
查看>>
Java回顾之多线程
查看>>
sqlite
查看>>
机电行业如何进行信息化建设
查看>>
Windows Azure Platform Introduction (4) Windows Azure架构
查看>>
【转】chrome developer tool 调试技巧
查看>>
mahout运行测试与kmeans算法解析
查看>>
互相给一巴掌器
查看>>
Android SDK环境变量配置
查看>>
VM10虚拟机安装图解
查看>>
9、总线
查看>>
Git 笔记 - section 1
查看>>
java通过jsp+javaBean+servlet实现下载功能
查看>>
STM32 使用Cubemx 建一个USB(HID)设备下位机,实现数据收发
查看>>
异步表单提交
查看>>
[洛谷U871]building
查看>>
次小生成树
查看>>
Redis在windows下安装过程
查看>>
ip转城市接口,ip转省份接口,ip转城市PHP方法
查看>>