自己写的winform窗体自适应大小代码,代码比较独立,很适合贴来贴去不会对原有程序造成影响,可以直接继承此类或者把代码复制到自己的代码里面直接使用

借鉴了网上的一些资料,最后采用重写WndProc方法,这样可以兼顾窗体拖拽调整窗体大小和最大化、最小化方法,而且代码比较简练,代码侵入性较小

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing; namespace LzRabbit
{
public class AutoResizeForm : Form
{
const int WM_SYSCOMMAND = 0X112;//
const int SC_MAXIMIZE = 0XF030;//
const int SC_MINIMIZE = 0XF020;//
const int SC_RESTORE = 0XF120; //
const int SC_CLOSE = 0XF060;//
const int SC_RESIZE_Horizontal = 0XF002;//
const int SC_RESIZE_Vertical = 0XF006;//
const int SC_RESIZE_Both = 0XF008;// protected override void WndProc(ref Message m)
{
if (m.Msg == WM_SYSCOMMAND)
{ switch (m.WParam.ToInt32())
{
case SC_MAXIMIZE:
case SC_RESTORE:
case SC_RESIZE_Horizontal:
case SC_RESIZE_Vertical:
case SC_RESIZE_Both:
if (WindowState == FormWindowState.Minimized)
{
base.WndProc(ref m);
}
else
{
Size beforeResizeSize = this.Size;
base.WndProc(ref m);
//窗口resize之后的大小
Size afterResizeSize = this.Size;
//获得变化比例
float percentWidth = (float)afterResizeSize.Width / beforeResizeSize.Width;
float percentHeight = (float)afterResizeSize.Height / beforeResizeSize.Height;
foreach (Control control in this.Controls)
{
//按比例改变控件大小
control.Width = (int)(control.Width * percentWidth);
control.Height = (int)(control.Height * percentHeight);
//为了不使控件之间覆盖 位置也要按比例变化
control.Left = (int)(control.Left * percentWidth);
control.Top = (int)(control.Top * percentHeight);
//改变控件字体大小
control.Font = new Font(control.Font.Name, control.Font.Size * Math.Min(percentHeight, percentHeight), control.Font.Style, control.Font.Unit);
}
}
break;
default:
base.WndProc(ref m);
break;
}
}
else
{
base.WndProc(ref m);
}
}
}
}

Winform窗体控件自适应大小的更多相关文章

  1. C# Winform窗体和控件自适应大小

    1.在项目中创建类AutoSizeForm AutoSizeForm.cs文件代码: using System; using System.Collections.Generic; using Sys ...

  2. winform窗体控件(全)

    回顾跟补充下除了昨天那常用6个其他的winform窗体控件作用 1:Button:按钮 (1)AutoSize:如果是True的情况下,内容将会撑开:False的话会另起一行 (2)Enabled: ...

  3. C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法

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

  4. C# WinForm窗体控件GroupBox修改边框颜色控件

    C# WinForm窗体控件GroupBox修改边框颜色控件 1.新建组件这里可以自定义一个GroupBox控件起名为GroupBoxEx 2.增加一个BoderColor属性 private Col ...

  5. 如何在多线程中调用winform窗体控件

    由于 Windows 窗体控件本质上不是线程安全的.因此如果有两个或多个线程适度操作某一控件的状态(set value),则可能会迫使该控件进入一种不一致的状态.还可能出现其他与线程相关的 bug,包 ...

  6. Winfon 页签切换及窗体控件自适应

    由于公司的业务调整,最近不仅开发bs,还有不熟悉的cs,人手也不足,项目还多,对于cs来说,算是小白,虽然是一个人,也是硬着头皮写,拖拽控件,自定义控件.一个项目下来,对cs有了很深的认识,这里好好感 ...

  7. Winform 窗体控件随窗体自动(等比例)调整大小

    新建窗体程序了,添加窗体事件Load(加载窗体时).Resize(调整控件大小时).自定义方法setTag(获取控件的width.height.left.top.字体大小等信息的值).setContr ...

  8. winform窗体 控件【菜单和工具栏控件】【容器控件】

    winform的菜单栏和工具栏    1.ContextMenuStrip   -- 右键菜单     可以绑定在任何一个控件上,添加操作快捷键,并可以设置多层    每行相当于一个按钮,输入-可添加 ...

  9. winform窗体 控件【公共控件】

    Button   按钮 布局 AutoSize    自动匹配尺寸 Location     确定控件位置,相对左上角坐标 Margin       控件与控件之间的距离 Size           ...

随机推荐

  1. mac OS X中升级php5.5至php5.6 or php7

    在做php项目中,提示“Warning. PHP 5.6 or newer is required. Please, upgrade your local PHP installation.” 通过p ...

  2. python 普通方法,@classmethod,@staticmethod

    普通方法 实例化一个类,然后通过类的实例化去调用方法: class method1: def __init__(self): self.items = [1,2,3,] def getvalue(se ...

  3. C语言 · 确定元音字母位置

    算法训练 确定元音字母位置   时间限制:1.0s   内存限制:512.0MB      输入一个字符串,编写程序输出该字符串中元音字母的首次出现位置,如果没有元音字母输出0.英语元音字母只有‘a’ ...

  4. Linux shell while

    sh count=1 while [ $count -le 5 ]; do echo 1234567890abcdefghqwertyuiopdasdk > /dev/ttyS1 & e ...

  5. 用图片做div背景的列表布局 CSS代码

    思路: 1.因为是竖型列表,所以外层用 相对定位,这样 在不会重叠在一起 relative 2.里面用绝对位置 absolute,覆盖在图片上面 3.这里有个小技巧,我里面有个特效,文字竖立,并向右旋 ...

  6. node学习笔记2——搭建服务器

    搭建服务器关键词: require('http') —— 请求 node 里面的 http 模块 createServer —— 创建一个服务器 request —— 请求 response—— 响应 ...

  7. Android学习之Intent使用

    1.使用显示Intent Intent intent = new Intent(FirstActivity.this,SecondActivity.class); startActivity(inte ...

  8. 使用VS2012生成DLL文件(1)

    文章转载自:1. http://blog.sina.com.cn/s/blog_45bcb4c3010140b3.html 一:生成DLL 1:创建DLL工程 文件->新建->项目-> ...

  9. 【AndroidManifest.xml详解】Manifest属性之sharedUserId、sharedUserLabel

    http://blog.csdn.net/wirelessqa/article/details/8581652 android:sharedUserId 当APK安装的时候,userid这个标志就会产 ...

  10. PHP递归算法的简单实例

    递归函数为自调用函数,在函数体内直接或直接自个调用自个,但需求设置自调用的条件,若满意条件,则调用函数自身,若不满意则停止本函数的自调用,然后把目前流程的主控权交回给上一层函数来履行,也许这么给我们解 ...