窗体控件随窗体大小改变(包括字体大小)
文章参考: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
窗体控件随窗体大小改变(包括字体大小)相关推荐
- 窗体控件随窗体大小改变(仍有不足)
private void frmWatch_Load(object sender, EventArgs e){FormWidth = this.Width;FormHeight = this.Heig ...
- MFC窗体控件随窗体变化
/定义函数.变量//void resize();POINT Old;//存放对话框的宽和高/// void CNewFrameDlg::OnSize(UINT nType, int cx, int c ...
- c语言easyx改变字体大小,改变控制台字体大小
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 网友说,既然能改变控制台的颜色,为什么不能改变控制台的字体大小呢?答案是肯定的.系统为我们提供了许多的API,能更改字体大小的API正隐身其中.网上没有控 ...
- C#窗体控件随窗体变大而变大
PC 环境 win10 ,编译器 visual studio2015 private float X;private float Y;private void setTag(Control cons) ...
- [原创]FineUI秘密花园(二十七) — 窗体控件概述(上)
窗体控件在项目中使用非常频繁,同时窗体控件和启用IFrame的面板控件也一起构成了FineUI所特有的内联框架,从而使弹出窗体不再局限于IFrame页面中.本章我们会详细介绍窗体控件的基本用法. 创建 ...
- winformbutton边框怎么改_C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法
C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法 1.新建组件这里可以自定义一个Panel控件起名为PanelEx 2.增加一个BoderColor属性和BoderSize属性 pr ...
- vba数据类型,运算符,内置函数,循环判断语句,窗体控件
文章目录 VBA基本数据类型 示例代码 声明常量,运算符和表达式 内置函数 代码 可视化编程 判断语句 循环语句 窗体控件,窗体的加载卸载 listbox,checkbox,combobox VBA基 ...
- C#如何实现窗体控件大小随窗体大小变化(包括字体)
如图,拖动窗体即可改变控件大小(包括字体) 窗体尺寸:345*315 窗体尺寸:603*509 项目资源如下 源码如下 using System; using System.Collections.G ...
- QT窗体控件自适应大小
介绍QT中的几种常见布局 常用的布局方法: (1)使用水平布局类QHBoxLayout: (2)使用垂直布局类QVBoxLayout: (3)使用网格布局类QGridLayout: (4)使用表格布局 ...
最新文章
- 一起学spring--spring事件机制--监听器
- JavaScript replace() 方法
- 探秘区块链 - 头条新闻
- zblog文件大小超出,上传成功但插入不了
- 单人纸牌_NOI导刊2011提高(04)
- php str_replace 源码,PHP中str_replace函数的详解
- mysql盲注学习-1
- 【英语学习】【WOTD】regale 释义/词源/示例
- Android中的 targetsdkversioin
- vb.net的UI设计
- 计算机网络基础知识框架
- java http 401_401 API请求状态错误
- 3. pandas基础
- 视频编码中的I帧、P帧、B帧的概念和特点
- 区块链以及蚂蚁开放联盟链初探索
- Vim - 扩展命令(末行命令)模式
- 没有钱没技术没学历应该怎么去创业?
- 数学模型转化为计算机语言,程序设计语言类课程教学选题方法探讨
- 华为运营商级路由器配置示例 | 公网IPv6 over SRv6 TE Policy
- 软件需求工程五组工作日记——开篇:项目简介