文章参考:http://blog.csdn.net/loveme1204/archive/2007/12/24/1964577.aspx

是一篇vb编写的,我只是把它翻译成c#的.

其实Anchor和Dock属性也可以实现,但好象只对容器效果理想,而且字体大小也没有变化.最近论坛上有好多这样的贴子,具体实现代码如下:

        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);

当然定义了两个全局变量,private float X; private float Y;

细心的你一定会发现还有个y ;这是因为有statusStrip1之类的控件,这是就一定要注意,窗体的实际宽度和高度一定要减去statusStrip1之类.

如果是容器,最好将Anchor和Dock属性也修改过来.

效果还不错.

帖子:http://topic.csdn.net/u/20080516/13/12a39498-314f-4a7b-a210-6988f79da0f4.html

窗体控件随窗体大小改变(包括字体大小)相关推荐

  1. 窗体控件随窗体大小改变(仍有不足)

    private void frmWatch_Load(object sender, EventArgs e){FormWidth = this.Width;FormHeight = this.Heig ...

  2. MFC窗体控件随窗体变化

    /定义函数.变量//void resize();POINT Old;//存放对话框的宽和高/// void CNewFrameDlg::OnSize(UINT nType, int cx, int c ...

  3. c语言easyx改变字体大小,改变控制台字体大小

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 网友说,既然能改变控制台的颜色,为什么不能改变控制台的字体大小呢?答案是肯定的.系统为我们提供了许多的API,能更改字体大小的API正隐身其中.网上没有控 ...

  4. C#窗体控件随窗体变大而变大

    PC 环境 win10 ,编译器 visual studio2015 private float X;private float Y;private void setTag(Control cons) ...

  5. [原创]FineUI秘密花园(二十七) — 窗体控件概述(上)

    窗体控件在项目中使用非常频繁,同时窗体控件和启用IFrame的面板控件也一起构成了FineUI所特有的内联框架,从而使弹出窗体不再局限于IFrame页面中.本章我们会详细介绍窗体控件的基本用法. 创建 ...

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

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

  7. vba数据类型,运算符,内置函数,循环判断语句,窗体控件

    文章目录 VBA基本数据类型 示例代码 声明常量,运算符和表达式 内置函数 代码 可视化编程 判断语句 循环语句 窗体控件,窗体的加载卸载 listbox,checkbox,combobox VBA基 ...

  8. C#如何实现窗体控件大小随窗体大小变化(包括字体)

    如图,拖动窗体即可改变控件大小(包括字体) 窗体尺寸:345*315 窗体尺寸:603*509 项目资源如下 源码如下 using System; using System.Collections.G ...

  9. QT窗体控件自适应大小

    介绍QT中的几种常见布局 常用的布局方法: (1)使用水平布局类QHBoxLayout: (2)使用垂直布局类QVBoxLayout: (3)使用网格布局类QGridLayout: (4)使用表格布局 ...

最新文章

  1. 一起学spring--spring事件机制--监听器
  2. JavaScript replace() 方法
  3. 探秘区块链 - 头条新闻
  4. zblog文件大小超出,上传成功但插入不了
  5. 单人纸牌_NOI导刊2011提高(04)
  6. php str_replace 源码,PHP中str_replace函数的详解
  7. mysql盲注学习-1
  8. 【英语学习】【WOTD】regale 释义/词源/示例
  9. Android中的 targetsdkversioin
  10. vb.net的UI设计
  11. 计算机网络基础知识框架
  12. java http 401_401 API请求状态错误
  13. 3. pandas基础
  14. 视频编码中的I帧、P帧、B帧的概念和特点
  15. 区块链以及蚂蚁开放联盟链初探索
  16. Vim - 扩展命令(末行命令)模式
  17. 没有钱没技术没学历应该怎么去创业?
  18. 数学模型转化为计算机语言,程序设计语言类课程教学选题方法探讨
  19. 华为运营商级路由器配置示例 | 公网IPv6 over SRv6 TE Policy
  20. 软件需求工程五组工作日记——开篇:项目简介

热门文章

  1. Flutter仿京东
  2. mx-framework前端框架使用经验积累(SG-UAP)
  3. ZUCC 操作系统原理实验 模拟考试
  4. GRP-U8单机版如何备份账套
  5. Vim配置#Vim插件安装#NERDTree配置
  6. 想要随时随地在任何光线下拍摄吗?AI智能图像降噪软件带给大家~
  7. 【公司真题--字节跳动】字节跳动2019春招研发部分编程题汇总
  8. MATLAB代码:考虑用户舒适度的冷热电多能互补综合能源系统优化调度
  9. PMcenter集中监控平台丨多台精密空调集中监控方案
  10. 火影忍者ol HTML5,火影忍者OL忍者考试50层全职业攻略