WinForm窗体及其所有控件和字体的自适应大小

本文介绍了解决WinForm窗体及其控件在容器中无法自适应大小的问题,特别是涉及嵌套控件如groupBox的情况。通过将控件的自适应处理放在窗体SizeChanged事件中,实现窗体及所有控件的自适应调整,同时提供了针对dataGridView的列宽自动调整方法,以避免数据过多导致的性能问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、说明


  网上有很多关于此问题的博客 ,其中也讲解了控件自适应的原理。近期有网友说,装在panel,groupbox等容器里面的控件,没有效果?

  这是控件嵌套的问题,加入即可实现。当控件在groupbox等容器中时,他就只受groupbox管理,而不是Form容器管理。使用皮肤时,要注意在窗体Load事件中,有些控件(比如DataGridView)的子控件还没有完成,在这里记录控件的个数比较少,而在窗体SizeChanged事件中获取的比较多(是正常的)。
  解决的方法是,记录控件的初始位置和大小以及处理控件的缩放,都放到窗体SizeChanged事件中,只需第一次记录控件的初始位置和大小,之后再调用类的自适应方法即可。

二、使用方法


  1.把自适应的类整体复制到你的工程命名空间里,(这样做,每个窗体均可使用)
     然后在需要自适应的窗体中做2步即可:
  2.声明自适应类实例。
  3.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,首次记录窗体和其控件初始位置和大小,之后调用类的自适应方法,完成自适应。
 

 

三、完整代码如下:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    class AutoSizeFormClass
    {
        //(1).声明结构,只记录窗体和其控件的初始位置和大小。
        public struct controlRect
        {
            public int Left;
            public int Top
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值