首页 > 编程语言 >C# winform控件大小跟随窗体大小改变

C# winform控件大小跟随窗体大小改变

时间:2023-11-03 20:46:27浏览次数:31  
标签:控件 Convert C# scaleX int 窗体 ToInt32 con

int iFormWidth, iFormHeight;//初始窗体宽高
//窗体加载事件
private void Form1_Load(object sender, EventArgs e)
{
    iFormWidth = this.Width;//初始宽
    iFormHeight = this.Height;//初始高
    WriteIn_Tags(this);//记录初始控件信息
}

//调整控件大小事件
private void Form1_Resize(object sender, EventArgs e)
{
    Form frmMain = (Form)sender;
    double scaleX = frmMain.Width * 1.0 / iFormWidth;
    double scaleY = frmMain.Height * 1.0 / iFormHeight;
    ResizeAllControls(frmMain, scaleX, scaleY);
}

//将所有控件信息写入控件的Tag里
public void WriteIn_Tags(Control cons)
{
    //遍历所有控件
    foreach (Control con in cons.Controls)
    {
        string strConInfo = con.Width.ToString() + "?" + con.Height.ToString() + "?" + con.Left.ToString() + "?" + con.Top.ToString() + "?" + con.Font.Size.ToString();//记录控件的宽、高、左距、顶距和字体大小
        con.Tag = strConInfo;
        if (con.Controls.Count > 0)//子控件处理
        {
            WriteIn_Tags(con);//递归遍历
        }
    }
}

//控件大小跟随窗体大小比例进行转换
public void ResizeAllControls(Control cons, double scaleX, double scaleY)
{
    //遍历所有控件
    foreach (Control con in cons.Controls)
    {
        var tags = con.Tag.ToString().Split(new char[] { '?' });//识别保存在Tag里控件信息
        int iWidthOld = Convert.ToInt32(tags[0]);
        int iHeightOld = Convert.ToInt32(tags[1]);
        int iLeftOld = Convert.ToInt32(tags[2]);
        int iTopOld = Convert.ToInt32(tags[3]);
        double dFontSizeOld = Convert.ToDouble(tags[4]);

        con.Width = Convert.ToInt32(iWidthOld * scaleX);
        con.Height = Convert.ToInt32(iHeightOld * scaleY);
        con.Left = Convert.ToInt32(iLeftOld * scaleX);
        con.Top = Convert.ToInt32(iTopOld * scaleY);
        int iFontSizeNew = Convert.ToInt32(dFontSizeOld * scaleX);
        con.Font = new Font(con.Font.Name, iFontSizeNew, Font.Style);

        if (con.Controls.Count > 0)//子控件处理
        {
            ResizeAllControls(con, scaleX, scaleY);//递归遍历
        }
    }
}

 

标签:控件,Convert,C#,scaleX,int,窗体,ToInt32,con
From: https://www.cnblogs.com/blossomwei/p/17808416.html

相关文章

  • [ARC122E] Increasing LCMs
    ProblemStatementWehaveasequenceof$N$positiveintegers:$A_1,A_2,\cdots,A_N$.Youaretorearrangetheseintegersintoanothersequence$x_1,x_2,\cdots,x_N$,where$x$mustsatisfythefollowingcondition:Letusdefine$y_i=\operatorname{LCM}(x......
  • docker常用操作命令
    1、pingapt-getupdate如果提示权限不足 Permissiondenied报错:E:Listdirectory/var/lib/apt/lists/partialismissing.-Acquire(13:Permissiondenied)问题原因:权限不足,请使用root用户解决方案:0表示root用户dockerexec-u0-itid/bin/bash进入docke......
  • CSRF & SSRF
    CSRF&SSRFCSRFCSRF(Cross-SiteRequestForgery)(跨站请求伪造漏洞)原理用户访问网站,网站给用户cookie,此时攻击者给用户发送了一个诱惑链接,链接里有对该网站的访问代码,用户点击攻击者的链接后,触发恶意代码,攻击者就利用用户的cookie,执行了对网站的请求(以接口形式调用请求)......
  • P4057 [Code+#1] 晨跑 难度:普及
    这道题目读完之后很好理解:求这三个数的最小公倍数分析样例:输入:235输出:30短除法都会吧(不会的去我百度账号看我发的文章,百度ID:Cy周边),235都不能被同时整除,所以就相乘呗:2×3×5=30与样例相等,读一个样例就能看出来,题目求最小公倍数用一个自变函数gcd即可:下面是代码实现#i......
  • 梳理C++各种数据类型所占字节数和表示范围
    Outline1.数据类型所在字节数与程序运行平台有关2.列举各种数据类型所占字节数1.数据类型所在字节数与程序运行平台有关不同的平台上对不同数据类型分配的字节数是不同的。平台环境的理解:硬件架构操作系统(OS)编译器(Compiler)程序的运行环境取决于上述配件。原因:64位机......
  • NetCore 技术参考
    开发平台   1、数据模型   2、数据视图   3、界面模型   4、系统图标接口开发   1、接口设置   2、联动设置   3、调用日志代码生成   1、BLL业务逻辑层   2、DAL数据访问层   3、Model实体层   4、生成报表模板      5、EF......
  • 支付宝小程序的级联选择器,对接简单操作,Cascader 级联选择器element_ui
    首先,对于element_ui的动接,由于需要数据格式是 但是支付宝提的接口返回的数据是另一种格式,并且支付宝的三级联动接口是先只有一个列表,点击列表项再发现请求,生成另外一个下拉选择,需要这个三级联动不能直接使用element-ui的三级联动。需要自己实现这个功能 并且支付宝的这个......
  • CF DP 题乱做(续更)
    CF566F$1500$容易考虑到$n^2$做法:设$dp_i$为第$i$个数选的答案,对于排好序的序列,枚举前面的数$a_j$,如果$a_j|a_i$就转移,时间复杂度易知$O(n^2+n\logn)$。由于$a$至于很小,延续刚才的思路,设$dp_i$为选值为$i$的答案。那么她可以更新她的所有倍数,枚举倍数即可。......
  • 高斯数据库HCNA之数据库技术发展史
    二、数据库技术发展史1、数据库技术产生与发展数据库技术应数据管理任务的需要而产生数据管理的发展应用需求推动软硬件的飞速发展为基础三个阶段2、数据库系统阶段发展3、数据库管理三个阶段比较4、数据库系统优势整体数据的结构化数据面向整个系统而不是单个应用,被多个应......
  • Pset_BuildingUseAdjacent
    Pset_BuildingUseAdjacent相邻建筑用途:提供有关相邻建筑及其用途的信息,以确定其对感兴趣建筑的影响。请注意,对于所使用的属性集的每个实例,如果存在风险,则将存在属性集Pset_risk(q.v)的一个实例。  NameTypeDescriptionMarketCategoryP_SINGLEVALUE / IfcLabelMar......