Winform窗体程序 控件随窗体大小改变自动计算并改变控件大小(包括字体大小)_winform动态计算字号-程序员宅基地

技术标签: winform  c#  .net  Winform窗体应用开发系列  

核心代码:

      //全局变量
   private float X,Y;  

     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[] { ':' });
                float a = Convert.ToSingle(mytag[0]) * newx;
                con.Width = (int)a;
                a=Convert.ToSingle(mytag[1]) * newy;
                con.Height = (int)(a);
                a=Convert.ToSingle(mytag[2]) * newx;
                con.Left = (int)(a);
                a=Convert.ToSingle(mytag[3]) * newy;
                con.Top = (int)(a);
                Single currentSize = 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 );
                }
            }
 
        }
 
        void Form1_Resize(object sender, EventArgs e)
        {
           // throw new Exception("The method or operation is not implemented.");
            float  newx = (this.Width )/ X;
          //  float newy = (this.Height - this.statusStrip1.Height) / (Y - y);
            float newy = this.Height / Y;
            setControls(newx, newy, this);
            this.Text = this.Width.ToString() +" "+ this.Height.ToString();
 
        }
在Form_Load里面添加:
 
            this.Resize += new EventHandler(Form1_Resize); 
 
            X = this.Width; 
            Y = this.Height; 
            y = this.statusStrip1.Height; 
            setTag (this);

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39237340/article/details/112775530

智能推荐

做steam游戏搬砖的人越来越多,还能赚钱吗?-程序员宅基地

文章浏览阅读331次,点赞8次,收藏8次。有句话是这样说的:这两年中国的市场,钱就像无头苍蝇一样,哪里有shi就一窝蜂地扑过去,然后砰的一声,那坨shi炸了,无头苍蝇四散而去,继续寻找下一坨shi。

Rust的并发模型相比其他语言有何特点?-程序员宅基地

文章浏览阅读744次,点赞6次,收藏7次。Rust的并发模型结合了线程和异步I/O的优势,通过独特的所有权系统和借用检查器保证了内存安全,无需复杂的运行时垃圾回收机制。Rust作为一种内存安全性的系统编程语言,其并发模型具有独特的特点,与其他语言相比显示出其鲜明的优势。Go语言的并发模型主要基于轻量级的goroutines和channels,非常适合处理高并发的I/O密集型任务。随着异步编程的普及和硬件技术的不断进步,Rust有望在并发编程领域发挥更大的作用。另一方面,Rust的线程是真正的操作系统级线程,可以充分利用多核处理器的优势。

后台接口自动化(基于QT4S)-程序员宅基地

文章浏览阅读2.1k次。目录后台接口自动化(基于QT4S)一、背景:二、技术方案2.1项目目录:2.2接口定义2.3测试用例实现2.4测试数据构造三、复杂场景测试后台接口自动化(基于QT4S)导语 根据测试金字塔理论,自动化收益由高到低依次是单元测试,API接口测试和UI测试。其中单元测试的主体一般是开发人员,API接口测试和UI测试的主体是测试人员。相比迭代变化快、编写成本高而且运行耗时长的UI测试,API接口测试..._qt4s

猴子分桃c语言,猴子分桃。请给出算法-程序员宅基地

文章浏览阅读373次。下面这道题我曾经用计算机编程求过解,感觉几十行代码就可以解出来,但没有成功(已经成了我的心病)。哪位好心人来帮帮这些可怜的猴子吧!五个猴子在一个小岛上发现一堆桃子,他们想平分桃子但怎么也分不开,于是相约去睡觉,明天再分。晚上第一个猴子趁大家熟睡,爬起来吃掉一只桃子,剩下的恰好可以平分成五份,这个猴子拿走其中的一份藏起来,然后重新去睡觉。第二,第三,第四只猴子都照此办理。最后第五只猴子爬起来,吃了一..._c语言猴子分桃子

这家厂商有“100”种方法帮你上云-程序员宅基地

文章浏览阅读201次。早在2018年初,IDC曾发布一组预测数据:2018年云计算环境中部署IT基础设施产品的总开支(服务器、存储和交换机)将达523亿美元,同比增长10.9%。其中公有云数据...

Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin [id ‘c_failed to apply plugin [id 'com.alipay.bundle']-程序员宅基地

文章浏览阅读1.4k次。开始学习kotlin了,自己创建项目不会出错,导别人的项目出现下面的错Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin [id 'com.android.application']我试着修改kotlin的版本:ext.kotlin_version保持一致,也不行ext.kotlin_versionGradle版本修改一致还是不行, 百度了下都说加上下_failed to apply plugin [id 'com.alipay.bundle']

随便推点

[密码学] 密码学基础-程序员宅基地

文章浏览阅读847次,点赞15次,收藏16次。这是因为自行设计的密码算法可能存在未知的漏洞或弱点,而公认的标准算法经过了大量的安全分析和测试。密码算法是一种特殊的算法,它通过数学和计算机科学的技术手段,实现对信息的加密和解密,确保信息在传输过程中不被未经授权的人员读取、篡改或伪造。在互联网的通信中,数据是通过很多计算机或者通信设备相互转发,才能够到达目的地,所以在这个转发的过程中,如果通信包被其他人捕获到,那么数据就不再安全了。密钥就相当于是钥匙,如果要是丢了那么数据必然是不安全的,任何形式的密码,如果密钥丢了,数据的安全性就无法保证了。

python自动刷快手视频_快手加抖音自动刷视频脚本,引用的是python+易语言编程...-程序员宅基地

文章浏览阅读1.1k次。其实这个代码我这边已经整合好了,已有易语言版!!!下面分享的仅仅只是“python”代码先看下易语言版的界面: “python”代码import osimport timeb = 0def video():fun=os.system('adb shell input swipe 300 600 300 100') ##坐标据悉特需自己修定time.sleep(3)if __name__ == '_..._快手刷播放源码

自动化专题讲座:作为自动化工程师,如何才能更好的承担社会责任?_自动化工程师的社会责任-程序员宅基地

文章浏览阅读4.7k次,点赞6次,收藏11次。航空工程的先驱者、美国加州理工大学教授冯·卡门曾说:“科学家研究已有的世界,工程师创造未有的世界。”工程师运用科学技术为谁创造、创造什么样的世界以及怎样创造,都会对人类社会产生重要影响。学科技术犹如双刃剑,它既可以给人类带来福祉和进步,也可以给人类带来灾难和损害。随着科学技术的迅猛发展,工程师对人类社会的影响越来越大。工程师的社会责任感,成为人们越来越重视的问题。2004年在上海举办的世界工程师大会上,中国国务院副总理黄菊曾说: 面对新世纪、新机遇、新挑战,工程师和工程技术界在维护世界和平、促..._自动化工程师的社会责任

使用conan搭建opengl开发环境_conan配置opengl-程序员宅基地

文章浏览阅读446次。使用conan搭建opengl开发环境ConanConan is an open source, decentralized and multi-platform package manager for C/C++ that allows you to create and share all your native binaries.Conan是开源的分布式跨平台的C/C++软件包管理器,可以创建和共享所有本地的二进制库文件。搭建opengl环境项目文件结构创建conanfile.txt配_conan配置opengl

Leetcode刷题笔记(c++)_热题 HOT 100_跳跃游戏-程序员宅基地

文章浏览阅读501次。大厂大厂我来啦,leetcode刷题!

推荐文章

热门文章

相关标签