C#自定义控件实现控件随窗口大小改变
更新时间:2024-01-24 18:42:01 阅读量: 教育文库 文档下载
1.新建用户控件,取名MyForm。
2.将默认的UserControl改成Form
3.在类中添加以下代码
private float X, Y;
//获得控件的长度、宽度、位置、字体大小的数据
private void setTag(Control cons)//Control类,定义控件的基类 {
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);//递归 } } }
private void MyForm_Resize(object sender, EventArgs e) {
float newx = (this.Width) / X;//当前宽度与变化前宽度之比 float newy = this.Height / Y;//当前高度与变化前宽度之比 setControls(newx, newy, this);
this.Text = this.Width.ToString() + \ \ + this.Height.ToString(); //窗体标题显示长度和宽度
}
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
this.Resize += new EventHandler(MyForm_Resize); X = this.Width; Y = this.Height; setTag(this); }
4.新建windows窗口,继承自定义控件
5.随便添加一个控件到Form1上,测试。
正在阅读:
C#自定义控件实现控件随窗口大小改变01-24
中职《建筑力学》试卷03-10
宋庆龄的名言、名句、名言警句04-19
设计院实习报告(优秀4篇)03-24
俄罗斯新材料研发和产业发展现状03-20
实验10 数据完整性03-16
含有生肌液的组织工程皮肤修复兔皮肤缺损08-09
重庆市潼南区柏梓中学2016年高中地理6.2中国的可持续发展实践(第2课时)检测题新人教版必修211-29
停下来的感觉真好作文450字07-04
教科版三年级上册科学第一二单元每课练习03-15
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 控件
- C#
- 定义
- 大小
- 窗口
- 改变
- 实现
- 良好睡眠 健康人生
- 医院感染管理处置流程图
- 教科版六年级品德与社会下册1-5单元试题(含期中期末)附答案
- 世界名人名言精选
- 学习贯彻党的十九大精神知识竞赛参考题库
- 高中历史选修一六七专题月考题
- 湖北省黄冈市2018年中考英语试题及答案解析(含答案)
- 安全生产问责实施细则(2016版) - 图文
- 2017年9月2日(第三次联考)福建省事业单位考试真题与答案
- 计算机文化基础习题
- 高级茶艺师试题
- 沧州政府报告
- 榆林市西二路施工组织设计
- 应收账款管理本科毕业论文
- 怎样注册一家空间设计公司
- 《项目管理》期末复习答案
- 施工图纸与工程量清单的关系
- 中考化学 九年级1-9单元知识点 人教新课标版
- 留守儿童教育问题对策与建议
- 06工程量收方与结算管理制度