02--C#Winform--控件大小随窗口大小改变等比例变化

2023-05-16

最近在做Winform相关的项目,这就会涉及到如何将窗口里的控件大小随窗口的调整而改变大小,一开始想要直接调整窗口以及控件的属性来达到效果,比如,Anchor和Dock属性,但是没有实现,Anchor属性主要突出控件与主窗体的相对位置锚定,而Dock属性主要突出控件停留在窗体各边缘随窗体变化而变化,并且还和放置顺序相关,而我们自己涉及的控件往往需要更加灵活的位置以及放置顺序,最后只能自己通过代码来完成这一动作,思路如下:

(如果博友友更好的解决方式,欢迎评论区讨论)

1. 在窗体load时,遍历获取到所有控件的宽,搞,左边距,顶边距,字体大小,并将其暂存在控件的Tag属性中,以分号进行区别;

2. 利用窗体的Resize事件,根据新的窗体的宽高与原有的宽高换算得出比例去计算当前控件的各个距离; 

实现代码如下:

 #region //****************C#控件大小随窗体大小等比例变化*****************//
        private float FormWidth;                //当前窗体的宽度
        private float FormHeight;               //当前窗体的高度

        /// <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 newWidth, float newHeight, Control cons)
        {
            //遍历窗体中的控件,重新设置控件的值
            foreach (Control con in cons.Controls)
            {

                string[] mytag = con.Tag.ToString().Split(new char[] { ';' });    //获取控件的Tag属性值,并分割后存储字符串数组
                float a = System.Convert.ToSingle(mytag[0]) * newWidth;           //根据窗体缩放比例确定控件的值,宽度
                con.Width = (int)a;                                   //宽度
                a = System.Convert.ToSingle(mytag[1]) * newHeight;    //高度
                con.Height = (int)(a);
                a = System.Convert.ToSingle(mytag[2]) * newWidth;     //左边距离
                con.Left = (int)(a);
                a = System.Convert.ToSingle(mytag[3]) * newHeight;    //上边缘距离
                con.Top = (int)(a);
                Single currentSize = System.Convert.ToSingle(mytag[4]) * newHeight;//字体大小
                con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);
                if (con.Controls.Count > 0)
                {
                    setControls(newWidth, newHeight, con);
                }
            }
        }

        private void FormDemo_Resize(object sender, EventArgs e)
        {
            float newWidth = (this.Width) / FormWidth;       //窗体宽度缩放比例
            float newHeight = (this.Height) / FormHeight;    //窗体高度缩放比例
            setControls(newWidth, newHeight, this);          //随窗体改变控件大小
        }
        private void FormDemo_Load(object sender, EventArgs e)
        {
            FormWidth = this.Width;       //获取窗体的宽度
            FormHeight = this.Height;     //获取窗体的高度
            setTag(this);                 //调用方法
        }
        //******************END**************************//
        #endregion

运行效果:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

02--C#Winform--控件大小随窗口大小改变等比例变化 的相关文章

  • C# winForm 软件自动升级实现方式

    对于C winform开发者来说 xff0c 软件自动升级功能是一个很重要的功能 作者根据自身经验 xff0c 和大家分享一下软件升级的实现方式 注意 xff1a 本文主要介绍通过WebService升级软件 作者的另一篇通过FTP方式升级
  • winform项目搭建

    1打开vs2019 xff0c 新建Windows窗体应用 NET Framework 2项目名称 xff08 文件夹的名字 xff0c 如login xff09 xff0c 位置 xff1a 桌面 xff0c 创建解决方案 xff0c 把
  • winform的UI设计关键属性汇总

    1 将控件的坐标转换成屏幕的坐标 br KeyBoard StartPosition 61 FormStartPosition Manual br Point showPoint 61 ActiveTBox PointToScreen ne
  • winform中进行动态布局

    在某些网页中 xff0c 对有些按钮进行选择后 xff0c 网页中的布局会增加或者减少 xff0c 无论增加还是减少 xff0c 都会按照顺序进行排序 这个效果在winform中也是可以的 1 建立一个winform项目 2 拖动控件后 x
  • c# WInform 自定义导航布局

    问题形成原因 xff1a 软件一般都是左侧树导航或上部菜单导航 xff0c 做好一个软件后 xff0c 有的客户可能想用一个页面做导航图像 而各个客户用的功能可能不同 xff0c 所以导航布局需要自定义 思路 xff1a 1 把菜单列出来
  • Winform

    自适应窗口布局 OnLayout 窗口在尺寸变化时 会调用OnLayout方法 所以 在form1 cs文件里重写OnLayout方法即可实现自适应 在OnLayout方法中 我们获取一下窗口的宽度和高度 根据窗口的宽度和高度重新设定控件的
  • C# WinForm系列-创建Windows项目

    本系列实例适合初学者 xff0c 老手请直接Pass吧 Visual Studio从2003版本到现在的2022版本 xff0c 我也一版一版的使用 xff0c 体验了微软这个IDE开发工具的强大 唉 xff0c 我想多说点或上网多找点资料
  • .NET编程——利用C#显示图片(WinForm)

    目录 前言 程序设计 前言 在Visual Studio下用C 实现导入图片并显示图片 xff0c 同时可以通过按键来切换图片 程序设计 功能及使用流程 该程序可实现从文件夹中批量导入图片并显示 获取图片左侧显示图片列表 xff0c 右侧显
  • winform怎样设置comboBox默认值

    combox是开发winform常用的组件之一 xff0c 如何添加他的默认值呢 xff01 方法 步骤 新建一个windows窗体应用程序 xff0c 这里项目命名为test01 在默认打开的Form1中 xff0c 在左边的工具箱拖拉两
  • Winform datagridview中显示下拉框示例

    方式一 xff1a 如下图所示 xff0c 该方式也是较为简单的一种 你只需要添加一列类型为DataGridViewComboBoxColumn的列 xff0c 然后添加数据源即可 但是我们看到这种方式的下拉列表看起来并不是十分的美观 xf
  • 打造属于自己的正则表达式

    概述 首先需要说明的一点 无论是Winform 还是Webform 都有很成熟的日历控件 无论从易用性还是可扩展性上看 日期的选择和校验还是用日历控件来实现比较好 前几天在CSDN多个版块看到需要日期正则的帖子 所以整理了这篇文章 和大家一
  • 发现一款专为.NET WinForms开发的数据可视化图表库

    FastReport是快捷 轻量级报表工具 使用简单 功能丰富 性价比高 适合个人 中小型企业和项目使用 FastReport近期推出了全新专为 NET WinForms开发的数据可视化图表库FastReport Business Grap
  • Winform实现ComboBox模糊查询

    1 新增项目 using System using System Collections Generic using System ComponentModel using System Data using System Drawing
  • Winform SplitContainer控件可调整大小

    IsSpliterFixed属性设为False FixedPannel属性设为Pannel1 要固定的面板的名称 之后鼠标移动到控件中间的分隔线 就可以调整大小了
  • Winform项目之学生成绩管理系统设计与实现(三)

    1 班级管理 private ClassService classService new ClassService public ListClassForm InitializeComponent this dgvListClass Row
  • 「干货分享」DevExpress常用控件——RichEditControl使用指南

    做WinForms的一般都知道 传统 NET界面有一个RichTextBox控件 这个是一个富文本控件 可以存储图片文字等内容 它有自己的文件格式RTF 在DevExpress控件组里面也有一个同等的控件 他的名字是RichEditCont
  • WindowsFormsHost控件

    WPF和WinForms是两个不同的UI框架 都是由Microsoft创建的 WPF是WinForms的一个更现代的替代品 WinForms是第一个 NET UI框架 为了在两者之间轻松过渡 Microsoft确保WinForms控件仍然可
  • C#开发Windows窗体应用程序的步骤

    使用C 开发应用程序时 一般包括创建项目 界面设计 设置属性 编写程序代码 保存项目 程序运行等6个步骤 1 创建项目 在Visual Studio2017开发环境中选择 文件 新建 项目 菜单 弹出 新建项目 对话框 如图8 1所示 图8
  • 由于缺少调试目标 E:a\b\c\串口配置工具\bin\Debug\串口配置工具.exe“,visual Studio无法开始调试。请生成项目并重试,或者相应OutputPath和AssemblyNa

    最近做一个窗体程序时候出现这个错误 我的项目名称是串口配置工具 建议为英文来命名 项目名称下面有这两个 发现 没有这个串口配置工具 exe 然后再这个 这里面发现这个串口配置工具 exe 最后直接 exe文件把这个复制到 项目名称 bin
  • WinForm应用实战开发指南 - 如何开发工作流模块的审批会签操作(二)

    前面文章中 点击这里回顾 gt gt 介绍了请假申请单和报销申请单两个不同的业务表单的流程处理 一个是单表信息 一个包含明细的主从表信息 后者包含了条件流程的处理 在流程审批中 一般还有一种流程处理就是会签的操作 会签处理是几个审批步骤中审

随机推荐

  • VS2019的C++项目如何查看源文件(.h,.cc.cpp等)所在的工程

    在大型的C 43 43 项目中 xff0c 一个解决方案有多个 vcxproj工程文件 每个工程文件里又有很多源文件 xff0c 比如 xff1a 8071个项目 xff0c 文件数则更多 xff0c 因此 xff0c 当你打开一个源文件时
  • csdn排名出了Bug了?一场因排名引发的血案!

    一石激起千层浪 xff0c 排名让人很彷徨 xff01 很多人已经注意到了 xff0c 博客的排名出现了非常大的变化 xff01 不只是排名 xff0c CSDN最近的动作可是很频繁 xff0c 让我们来细数CSDN那些改变 但是 xff0
  • CSDN博主排名更新,看看原来的前1000名博主现在的排名如何

    CSDN博主排名更新 xff0c 看看新规则 原来的排名参考 xff1a CSDN前1000名博主 博客原排名新排名stpeace 1 25yuanmeng001 2 143yjclsx 3 72phphot 4 427833Augusdi
  • 程序员的求爱日:比1024多一点,1025,要你爱我!

    转眼又要到了1024 xff0c 还记得去年的1024活动 xff0c 我写一篇 xff1a 今天是程序员节 xff0c 明天就是求爱日啦 xff01 今年的活动 xff1a 程序员邂逅鼓励师的正确姿势 xff01 鼓励师 这个名词 xff
  • C# 绘制箭头的方法,仿微信截图的箭头

    C 绘制箭头的方法 xff0c 仿微信截图的箭头 效果见下图 xff0c 实际上还是有区别的 xff0c 箭头的起点处微信的是圆端 xff0c 而我实现的是尖端 说说我的实现吧 xff0c 实现方法其实是划线 xff0c 线的两端都要设置端
  • CSDN最近变化有点快

    文章内容原来在右边 xff0c 现在移到了左边 不过博客设置中的皮肤缩略图还没有变 归档样式变了 系统通知类型越来越多
  • 简单功能强大的jQuery在线图片裁剪插件croppic

    帝国CMS后台文章编辑功能的标题图片 xff0c 也就是文章封面设置功能用起来非常的不习惯不好用 xff0c 所以考虑换一个更好用的 xff0c 在网上找了一下 xff0c 最后觉得croppic最不错 xff0c 这里给大家分享一下 cr
  • 网站安全情况自查表怎么填?

    今天收到相关单位一个文档要填写 xff0c 包括 xff1a 表二 xff1a 信息系统运营使用单位填写 xff0c 表三 xff1a 网站安全情况自查表 xff0c 这个怎么填写呢 xff1f 按我个人理解 xff0c 按网站备案的信息填
  • 又是一年1024,去年的1025你是怎么过的?

    除非你在等车 xff0c 回首看看 xff0c 没有人不会觉得时间过得太快了吧 xff01 又是一年1024 xff0c 去年的1025你是怎么过的 xff1f 去年的 程序员的求爱日 比1024多一点 1025 要你爱我 前年的 今天是程
  • 2020年终总结——走在代码公益的路上

    从2012年加入 CSDN 博客 xff0c 已经过去了8个年头 xff0c 有收获也有感慨 xff1b 目前总排名24 xff0c 虽然排名已经很靠前了 xff0c 也是输出了很多内容 xff0c 但不像一些人输出的都是比较系统性的内容
  • nginx 实现图片防盗链功能

    在搜索浏览网页的时候 xff0c 发现一篇文章是从我的个人网站转载的 xff0c 但是没有注明出处 xff0c 文章中的图片也没有本地化处理 xff0c 还是从我的服务器请求 xff0c 这就无形中增加了我的服务器的开销 xff0c 于是有
  • 使用element ui + vuedraggable 实现页面控件拖拽排序

    项目要实现一些控件的拖拽排序 从而找到了这款vuedraggable控件 如上图要实现这些控件的拖拽排序 这是拖拽后 由于公司网络的原因 xff0c 项目没有使用npm xff0c 都是使用的引入的js lt script type 61
  • Winform界面开发教程 - 如何对应用程序界面的组织布局

    在设计界面的时候 xff0c 不管是在Web端 xff0c 还是在WinForm端 xff0c 或者是WPF或者移动界面等应用上 xff0c 我们对界面的组织布局 xff0c 一直是比较有趣的话题 xff0c 而组织界面的好坏从用户的感受来
  • 【油猴脚本 Greasemonkey】GM_xmlhttpRequest内部实现原理

    好久没在CSDN发文章了 xff0c 自从有了自己的网站 xff0c 自己的想怎么折腾就怎么折腾 xff0c 逐步的完善 另一方面 xff0c 技术上一直在吃老本 xff0c 没什么进步 xff0c 也没什么可发的 最近在写一个Chrome
  • CentOS6.5下安装远程桌面服务端软件VNC Server

    VNC 使您可以 远程 访问和控制您的计算机从另一计算机或移动设备上 xff0c 无论你在 世界 的 任何地方 常见的 使用情形 xff0c 包括给同事和朋友 提供 桌面支持 远程管理您的服务器 将 VNC Server 部署到 您想要控制
  • Centos(Linux)系统备份与还原

    Centos系统备份与恢复教程 tar xff1a 特点 1 保留权限 2 适合备份整个目录 3 可以选择不同的压缩方式 4 如果选择不压缩还能实现增量备份 xff0c 部份还原 xff0c 参考man tar dd 特点 1 对块进行操作
  • 03--C#入门基础

    今天我们就开始正式进入C 的入门学习 xff0c 从最简单的基础开始切入 xff0c 总结内容都非常的细节 xff0c 但也没有全部概况进去 xff0c 大家可以根据自己情况选择查看 xff0c 如有错处 xff0c 欢迎指正 目录 VS中
  • 04--C#运算符

    这一篇详细的介绍了C 中的几种运算符 xff0c 算术运算符 赋值运算符 复合赋值运算符 关系运算符 逻辑运算符 一元运算符 二元运算符 赋值运算符 61 xff1a 表示赋值 xff0c 表示把等号右边的值 xff0c 赋值给等号左边的变
  • Excel对图片的组合以及选择

    今天介绍的是利用Excel对图片进行的一些简单处理的方法 xff0c 比如对图片的编辑以及组合 xff0c 以及对图片的选择 xff1a 对图片进行一些圈红标注 xff1a 插入 gt 形状 gt 选择一个矩形框 xff0c 圈主自己要注释
  • 02--C#Winform--控件大小随窗口大小改变等比例变化

    最近在做Winform相关的项目 xff0c 这就会涉及到如何将窗口里的控件大小随窗口的调整而改变大小 xff0c 一开始想要直接调整窗口以及控件的属性来达到效果 xff0c 比如 xff0c Anchor和Dock属性 xff0c 但是没