C#Winform 实现控件自适应父容器大小

在日常开发中经常遇到控件不能随着父容器大小的改变而且自动改变控件的所在位置和大小。以下是实现的代码

 /// <summary>/// 根据父容器实现控件自适应大小位置/// </summary>/// <param name="control">所需自适应大小位置的控件</param>private void ChangeLocationSizeByParent (Control control){//记录父容器大小,来判断改变控件大小位置是因为父容器的改变还是通过设置控件大小位置去改变Size parentOldSize = control.Parent.Size;PointF locationPF = new PointF();locationPF.X = (float)control.Location.X / (float)control.Parent.Width;locationPF.Y = (float)control.Location.Y / (float)control.Parent.Height;PointF sizePF = new PointF();sizePF.X = (float)control.Width / (float)control.Parent.Width;sizePF.Y = (float)control.Height / (float)control.Parent.Height;control.LocationChanged += delegate (Object o, EventArgs e) {if (control.Parent != null&&parentOldSize.Equals(control.Parent.Size)){locationPF.X = (float)control.Location.X / (float)control.Parent.Width;locationPF.Y = (float)control.Location.Y / (float)control.Parent.Height;}};control.SizeChanged += delegate (Object o, EventArgs e) {if (control.Parent != null && parentOldSize.Equals(control.Parent.Size)){sizePF.X = (float)control.Width / (float)control.Parent.Width;sizePF.Y = (float)control.Height / (float)control.Parent.Height;}};control.ParentChanged += delegate (Object o, EventArgs e) {if (control.Parent == null){return;}locationPF.X = (float)control.Location.X / (float)control.Parent.Width;locationPF.Y = (float)control.Location.Y / (float)control.Parent.Height;sizePF.X = (float)control.Width / (float)control.Parent.Width;sizePF.Y = (float)control.Height / (float)control.Parent.Height;};control.Parent.SizeChanged += delegate (Object po, EventArgs pe) {Control pControl = (Control)po;int x = (int)(pControl.Width * locationPF.X);int y = (int)(pControl.Height * locationPF.Y);control.Location = new Point(x, y);int width = (int)(pControl.Width * sizePF.X);int hetght = (int)(pControl.Height * sizePF.Y);control.Size = new Size(width, hetght);control.Refresh();parentOldSize = pControl.Size;};}

转发请注明出处

C#Winform 实现控件自适应父容器大小相关推荐

  1. C#窗体控件自适应程序框大小

    实习:导师说加个容器就能实现,轻松且easy 弄了很久都没有成功,有瑕疵,最后发现原来是俄罗斯套娃. 解决办法:1.先添加一个容器,这个容器大小是全屏,属性Dock设置为fill,窗体变化后容器大小是 ...

  2. Winform窗体控件自适应大小

    自己写的winform窗体自适应大小代码,代码比较独立,很适合贴来贴去不会对原有程序造成影响,可以直接继承此类或者把代码复制到自己的代码里面直接使用 借鉴了网上的一些资料,最后采用重写WndProc方 ...

  3. onresize()调整浏览器窗口时,使图片等控件自适应地变化大小

    今天学习JS时,按照教程里如下代码实现"改变浏览器窗口的图片自适应问题",但没有达到想要的效果,图片在改变浏览器窗口的时候越变越大,刷新页面后又恢复原大小. height = (d ...

  4. textarea 自适应父容器大小

    使用bootstrap中的form-control类 <textarea id="progress_message" rows="10" class=&q ...

  5. DevExpress Winform 常用控件

    前言 DevExpress 控件的功能比较强大,是全球知名控件开发公司,对于开发 B/S 或 C/S 都非常出色,可以实现很炫且功能强大的效果. DevExpress Winform 常用控件是本人在 ...

  6. winformbutton边框怎么改_C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法

    C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法 1.新建组件这里可以自定义一个Panel控件起名为PanelEx 2.增加一个BoderColor属性和BoderSize属性 pr ...

  7. Winform DevExpress控件库(三) 使用NavBarControl控件定制导航栏

    NavBarControl控件:主要作用是制作包含多个选项组并且每个组里包含多个子选项的导航栏: 位于 工具箱 -> Navigation & Layout(导航栏与布局类控件) 目录下 ...

  8. Winform 窗体控件最大化自适应

    运行窗体效果如下: 默认点击最大化效果如下: 修改后最大化效果如下:控件自动缩放, 步骤实现如下: 1.在窗体中放一个容器(Panel),将容器的Dock属性设置为Fill.窗体中所有控件都放入这个容 ...

  9. VB调用C#写的WinForm.NET控件

    点击下载本文配套的演示程序代码http://files.cnblogs.com/xdesigner/VB-CS-WinformControl.zip. 一.前言: 虽然IT开发技术日新月异,不过业界仍 ...

最新文章

  1. 清华计算机知识工程怎么样,张民(muslv)清华大学计算机系知识工程组 硕士清华大学.ppt...
  2. 小程序-demo:小程序示例-page/component
  3. theme editor android,谷歌宣布将于下月停用 Material Theme Editor
  4. linux内核优化脚本,linux内核高级优化脚本
  5. 团队计划(4.27)
  6. Windows10电脑线 下hosts文件地址
  7. 虚拟机设置固定ip,ping不通,xshell无法连接
  8. windows dll 学习
  9. python导出excel 身份证_如何使用Python导出Excel文件?
  10. 前阿里P10员工赵海平加入字节跳动,职级或为4+
  11. P2183 [国家集训队]礼物
  12. vue函数@click.prevent使用纪要
  13. 虚拟机服务器异常怎么解决,windows server 2016 虚拟机异常关闭
  14. spring hateoas 1.0改动
  15. fama matlab源码_基于优化算法改造的Fama-French三因子模型
  16. python水浒传名字次数_可视化分析《水浒传》各章回人名
  17. 2022届互联网校招研发薪资汇总,都是钱哇~
  18. js 一次元素点击响应2个事件函数
  19. LoRa技术的基本认识
  20. 词汇小助手V1.1——引入自动翻译和在线词典功能

热门文章

  1. 驱动中同步与异步发送IRP
  2. 【渝粤题库】国家开放大学2021春1108钢结构(本)题目
  3. html简单购物车,用jsp实现一个简单的购物车web应用系统。
  4. visio怎么画大括弧
  5. 班级页面设计——【2-主界面部分】
  6. 苹果机型中最具经典的三款机型
  7. windows录屏_Windows电脑怎么录制屏幕?查看电脑自动录屏方法
  8. IoT技术概览(postscapes)
  9. 计算机应用基础南京廖华,《计算机应用基础》习题及答案
  10. 03-jQuery事件绑定和解绑