C#中怎样使控件随着窗体一起变化大小(常见困难以及修正)

本文介绍了在C#中使控件随着窗体大小变化的常见方法,包括使用Dock和Anchor属性、Form_Resize事件,重点讨论了通过保存控件原始比例并在窗体调整时按比例调整位置和大小的正确实现方式,避免了控件变形的问题。同时,文章提醒开发者不要使用Scale函数,并指出resize32.ocx控件在.NET框架中不可用。

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

这个是多么古老的话题啊,呵呵,可惜网上的解决方案都不大好。都是针对VB或者使用Dock和Anchor属性的。我实在看不过去,所以自己总结了一下。

1.使用一些布局面板,比如FlowLayoutPanel,TabLayOutPanel之类,但是缺点就是样式太死了。所以本人不采用。

2.采用Dock和Anchor属性。这类虽然鼠标点几下在属性栏设置一下就好,但是缺乏灵活性。只有上下左右中间几种选择。

3.采用Form_Resize()。这种方法最灵活,思路是窗体变化时,直接重写这个变化函数。

那么如何写呢?第一要将原来窗体的属性以及各个控件的所占位置的比例存入Tag中(Tag可以存任何东西哦!)

废话少说,直接贴代码:

public Form1()
        {
            InitializeComponent();
            int count = this.Controls.Count * 2+2;
            float[] factor = new float[count];
            int i = 0;
            factor[i++] = Size.Width;
            factor[i++] = Size.Height;
            foreach(Control ctrl in this.Controls)
            {
                fact

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值