c# winform 根据窗体自动调整控件
一、概述
本文要实现的功能是:当窗体最大化时,控件的大小可以随窗体一起变化。开发环境,vs2010 c# winform,窗体名称采用默认的Form1.
2、把调整控件大小的方法放到一个类中:FormSetSelfAuto.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing; namespace Kaifafanli
{
public class FormSetSelfAuto
{
private float X;
private float Y;
public float _x
{
set { X = value; }
}
public float _y
{
set { Y = value; }
}
//获取控件的width,height,left,top,字体的大小值,存放在控件的tag属性中
public 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>)
{
setTag(con);
}
}
}
//根据窗体大小调整控件大小
public void setControls(float newx,float newy,Control cons)
{
//遍历窗体中的控件,重新设置控件的值
foreach(Control con in cons.Controls)
{
//获取控件tag属性值,并分割后存储字符串数组
string[] mytag=con.Tag.ToString().Split(new char[]{':'});
float a = Convert.ToSingle(mytag[]) * newx;//根据窗体缩放比例确定控件的宽度值
con.Width = (int)a;
a = Convert.ToSingle(mytag[]) * newy;
con.Height = (int)a;//高度 a = Convert.ToSingle(mytag[]) * newx;
con.Left = (int)a;//左边缘距离
a = Convert.ToSingle(mytag[]) * newy;
con.Top = (int)a;//上边缘距离
Single currentSize = Convert.ToSingle(mytag[]) * newy;
con.Font = new Font(con.Font.Name,currentSize,con.Font.Style,con.Font.Unit);
if(con.Controls.Count>)
{
setControls(newx,newy,con);
} }
}
public void form_Resize(Form fr)
{
float newx = (fr.Width) / X;
float newy = (fr.Height) / Y;
setControls(newx, newy, fr);
fr.Text = fr.Width.ToString() + " " + fr.Height.ToString();
}
}
}
FormSetSelfAuto.cs
3、在窗体Form1中的调用方法
Form1的代码如下所示:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace Kaifafanli
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} FormSetSelfAuto fa = new FormSetSelfAuto();
private void Form1_Load(object sender, EventArgs e)
{
this.Resize += new EventHandler(Form1_Resize);
fa._x = this.Width;
fa._y = this.Height;
fa.setTag(this);
} private void Form1_Resize(object sender, EventArgs e)
{
fa.form_Resize(this);
}
}
}
Form1
c# winform 根据窗体自动调整控件的更多相关文章
- Winform跨窗体操作控件(使用委托)
Winform跨窗体操作控件是winform开发中很常见的形式,最常见且简单有效的方式便是使用委托的方式来进行操作,下面我将通过一个小实例来说明如何使用委托跨窗体实现控件操作. 实例介绍:两个窗体,F ...
- WinForm设置窗体默认控件焦点
winform窗口打开后文本框的默认焦点设置,进入窗口后默认聚焦到某个文本框,两种方法: ①设置tabindex 把该文本框属性里的tabIndex设为0,焦点就默认在这个文本框里了. ②Winfor ...
- 根据窗体自动调整控件及文本框记住上次填写内容Demo
第一次写文章,组词难免没有不通之处... 最近常用到Winform根据窗体大小自动调整空间大小及字体.文本框记住上次填写内容待下次输入某一段时候自动跳出上次输入内容.于是就随便把两个问题放到同一个de ...
- winform 跨窗体给控件传值 分类: WinForm 2014-08-02 16:33 195人阅读 评论(0) 收藏
两个窗体 FormA,FormB; FormA窗体中有一文本框控件:TextBox; FormB窗体中有一变量:txtJSJ 目的:把变量赋值给文本框 实现: 设置TextBox属性: Modifie ...
- VS中 Winform查看窗体内控件之间的相互关系
视图----其他窗口----文档大纲 这样可以查看之前的窗体布局关系
- WinForm窗体及其控件的自适应
3步骤: 1.在需要自适应的Form中实例化全局变量 AutoSizeFormClass.cs源码在下方 AutoSizeFormClass asc = new AutoSizeFormClass ...
- Winform 获取当前单击的控件名称 和 向窗体添加控件
Winform如何获取当前单击的控件名称,比如有100个Button 和一个button_Click()的按钮事件 ,分别点击不同按钮后显示所点击的按钮名称?private void button_C ...
- [WinForm] 使用反射将业务对象绑定到窗体或控件容器
在WebForm中,可以使用反射将业务对象绑定到 ASP.NET 窗体控件.最近做Winform项目,也参考WebForm中的代码实现同样的功能. Winform没有提供类似WebForm中的 ...
- 转:C# WinForm窗体及其控件的自适应
一.说明 2012-11-30 曾经写过 <C# WinForm窗体及其控件自适应各种屏幕分辨率> ,其中也讲解了控件自适应的原理.近期有网友说,装在panel里面的控件,没有效果? 这 ...
随机推荐
- python3基础语法(标识符,注释,数据类型,获取用户输出,代码块,python保留字)
编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: # -*- coding: cp-1252 -*- ...
- 浅谈DPCHookSSDT和RemoveDPC
最近学了DPC这一对,把Win7 32位和64位都做了,查阅了大量的资料,并且进行了大量调试,理一下思路,为了后面更好的学习. 转载请注明出处:http://www.cnblogs.com/littl ...
- Codeforces 919 C. Seat Arrangements
C. Seat Arrangements time limit per test 1 second memory limit per test 256 megabytes input standa ...
- codevs——2548 自然数积分解
2548 自然数积分解 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 把自然数N分解为若干个自然数之积,输出 ...
- linux编译
文章一 1)用户点击编译程序时,编译程序将C++源代码转换成目标代码,目标代码通常由 机器指令和记录如何将程序加载到内存的信息组成.其后缀通常为.obj或.o: 2)目标文件中存储的只是用户所编写的代 ...
- Nessus虚拟机的几个问题解决办法
1.使用ppp的校园网或者家庭宽带无法通过桥接上网. 这时要把这俩网卡变成NAT模式就行. 2.国外下载插件包(或者过慢). 我这里贡献个高速链接.base64,懂得自然懂. c3NyOi8vTkRj ...
- java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.github.pagehelper.Page pagehelper报错无法类型转化。
报错信息: 严重: Servlet.service() for servlet [springmvc] in context with path [] threw exception [Request ...
- composer配置和安装php框架
第一步:安装composerwin环境安装:下载地址:https://getcomposer.org/Composer-Setup.exe 下载后直接点击安装即可测试:cmd ->compose ...
- 跳转到指定页面popToViewController用法
有人问popToViewController的用法 就写了下了 希望能帮到有需要的人 [self.navigationController popToViewController:[self.navi ...
- 邁向IT專家成功之路的三十則鐵律 鐵律九:IT人社群互動之道-縮小自己
身為一位專業的IT人士所要學習的東西實在非常的多,然而對於時間相當有限的我們,最快速的學習方法就是向他人學習,而向他人學習的首要態度就是「縮小自己」.唯有將自己縮小到別人的眼睛裡,才能夠讓他們真心誠意 ...