首页 > 编程语言 >C#窗体应用开发

C#窗体应用开发

时间:2023-05-27 19:01:04浏览次数:42  
标签:控件 C# float newy 窗体 应用 Font con

简述

C#窗体应用开发之窗体布局

内容

窗体的处理

3.2.1 控件随窗体等比缩放

  首先需要设定两个字段,来表示窗体的长和宽:

private float X; // 当前窗体的宽度

private float Y; // 当前窗体的高度

此后在窗体的Design界面双击窗体添加Load事件、在事件栏内找到Resize事件,双击添加,此后所要使用的方法需写入这两个事件。需要用到的方法有:

/// <summary>

/// 将控件的宽,高,左边距,顶边距和字体大小暂存到tag属性中

/// </summary>

/// <param name="cons">递归控件中的控件</param>

private void setTag(Control cons)

{

    foreach (Control con in cons.Controls)

    {

        con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size;

            if (con.Controls.Count > 0)

                setTag(con);

    }

}

  
  
  
// 根据窗体大小调整控件大小

private void setControls(float newx, float newy, Control cons)

{

    // 遍历窗体中的控件,重新设置控件的值

    foreach (Control con in cons.Controls)

    {

  
        string[] mytag = con.Tag.ToString().Split(new char[] { ':' }); // 获取控件的Tag属性值,并分割后存储字符串数组

        float a = System.Convert.ToSingle(mytag[0]) * newx; // 根据窗体缩放比例确定控件的值,宽度

        con.Width = (int)a; // 宽度

        a = System.Convert.ToSingle(mytag[1]) * newy; // 高度

        a = System.Convert.ToSingle(mytag[2]) * newx;//左边距离

        con.Left = (int)a;

        a = System.Convert.ToSingle(mytag[3]) * newy;//上边缘距离

        con.Top = (int)a;

        Single currentSize = System.Convert.ToSingle(mytag[4]) * newy;//字体大小

        con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);

        if (con.Controls.Count > 0)

        {

            setControls(newx, newy, con);

        }

    }

}

注意:在调用这两个方法前,不要将窗体的MaximumBox与MinimumBox设为False,也不要将AutoSize属性设为True!!

之后即可在事件中调用方法:

private void MainForm_Load(object sender, EventArgs e)

{

    X = Width; // 获取窗体的宽度

    Y = Height; // 获取窗体的高度

    setTag(this); // 调用方法

}

  
private void MainForm_Resize(object sender, EventArgs e)

{

    float newx = Width / X; // 窗体宽度缩放比例

    float newy = Height / Y; // 窗体高度缩放比例

    setControls(newx, newy, this); // 随窗体改变控件大小

}

这样,一个控件能随窗体大小改变的窗体就创建完成了。

或者,可以退而求其次,将窗体的AutoSize属性设为True来实现控件随其内容的自适应大小变化。

标签:控件,C#,float,newy,窗体,应用,Font,con
From: https://blog.51cto.com/u_15996251/6362919

相关文章

  • Canal 安装 && 使用,监听Mysql数据库
    1.下载canal.deployer-1.1.5.tar.gz2.查看数据库是否开启binlog模式(必须)showvariableslike'log_%';log_bin属性值为ON,则binlog模式开启;为OFF则binlog模式关闭。若binlog模式关闭,则在MySQL配置文件my.cnf(my.ini)设置如下信息:[mysqld]log-bin=mysql-bin#开启binlogbi......
  • vscode配置C/C++调试环境
    1.Ctrl+Shift+P,输入tasks,选择"Tasks:ConfigureDefaultBuildTask",z这会生成tasks.json.然后,修改其中的args,删掉原来的${file},并将工程下的c文件添加进去,即${fileDirname}/*c(或单个文件添加也行,笔者因为工程的所有的c文件都在一个路径下,所以用的*.c):1{......
  • nacos的使用
    nacos的使用1.nacos可以作为注册中心和配置中心使用nacos的配置中心和注册中心的话,我们需要在配置文件中增加关于nacos的配置namespace,group可以不写,那么就是注册到默认的namespace和group下,不同namespace和group下是隔离开来的 2.如果我们只是想要注册到na......
  • java——微服务——spring cloud——Eureka——服务发现
         修改:  第一步:     第二步:       完成后,进行重启: 访问101和102,看是否已经对userservice进行负载均衡访问:         从日志看是否进行了负载均衡访问:               ......
  • 网安--Linux cnetos7相关操作
    1、修改静态网络配置文件vim/etc/sysconfig/network-scripts/ifcfg-ens33 IPADDR、NETMASK等需要大写如果出现问题可以重启虚拟网卡2、centos修改yum源shift+insert粘贴1、yum源存放的地址 2、对旧的文件进行备份 3、替换yum源地址,换成阿里云的地址  3、Xs......
  • CV的人有福啦!YTU贪心训练2(部分注释,更新ing)
    ------------恢复内容开始------------无聊做了做(虽然第一题被水了)1743ProblemA1#include<bits/stdc++.h>2usingnamespacestd;3constintN=100010;4intn,k,s[N],a[N],sum[N],ans,x,y,res;5intmain()6{7cin>>n>>k;8for(inti=0;i&l......
  • C语言猜字游戏记录
    1.猜字游戏的逻辑2.猜字游戏主体结构的实现3.菜单函数4.玩游戏函数##用rand函数和时间戳达到随机......
  • 电子熔断器IC行业市场调研分析报告
    2023-2029全球电子熔断器IC行业调研及趋势分析报告2022年全球电子熔断器IC市场规模约亿元,2018-2022年年复合增长率CAGR约为%,预计未来将持续保持平稳增长的态势,到2029年市场规模将接近亿元,未来六年CAGR为%。从核心市场看,中国电子熔断器IC市场占据全球约%的市场份额,为全球最主......
  • 分布式CAP理论
    分布式:一个大业务拆分成多个小业务并部署在不同的服务器上CAP:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partitiontolerance)这三项中的两项。  网络问题不可避免,P(分区容错性)是一定需要保证的如果此时有节点故障,如果剩余节点正常......
  • 410随身wifi刷debian,挂docker
    简介:随身wifi是个好玩的小东西,内置wifi,4gmodem,还有ttl,可以刷debian,openwrt。难能可贵的是便宜,9.9包邮。加之最近看电影已经改了阿里云转存,alist转webdav,电视或盒子kodi看共享,便下单几个,刷好送朋友玩。记录一下刷机过程一:备份备份不可少,虽然便宜,刷坏也不好救。推荐mikoser......