c# 窗体放大窗体中的控件也随着窗体放大

c# 窗体基础 专栏收录该内容
2 篇文章 0 订阅

因为最近要写c# 窗体程序,所以边写边来记录,这是我遇到的第一个问题,”小窗体自适应大窗体“在网上找了好多解决方法,终于找到了一个,以下是原文链接,我也再次学习一下。http://www.cnblogs.com/sakalaka/p/5135230.html,再次感谢这位博主。大笑

1.首先定义两个变量

private float x;//定义当前窗体的宽度
private float y;//定义当前窗体的高度

2.将控件的宽,高,左边距,定边距,字体大小暂存在tag 属性中

private 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>0)
        {
              setTag(con);
        }
    }
}

3.根据窗体的大小控制控件的大小

private void setControls(float newx,float,newy,Control cons)
{
     //遍历窗体中的控件,重新设置控件的值
     foreach(Control con in cons.Controls)
    {
         //获取控件的Tag属性值,并分割后存储字符串数组
         string [] mytag=con.Tag.ToString().Split(new char[]{';'});
         //根据窗体缩放的比例确定控件的值,宽度
          con.Width=Convert.ToInt32(System.Convert.ToSingle(mytag[0])*newx));
          con.Height=Convert.ToInt32(System.Convert.ToSingle(myTag[1])*newy);//高度
          con.Left=Convert.ToInt32(System.Convert.ToSingle(myTag[2])*newx);//左边距
           con.Top=Convert.ToInt32(System.Convert.ToSigle(myTag[3])*newy);//顶边距
           Single currentSize=System.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);
           }
          
    }
}


4.在窗体的装入事件中

x=this.Width;
y=this.Height;
setTag(this);

5.在窗体的Resize事件中

float newx=(this.Width) /x;
float newy=(this.Height) /y;
setControls(newx,newy,this);


坚持写完这些后,运行程序,放大窗体,你就可以看到控件随着窗体变大了


在文章的结尾再次感谢这位博主再见



  • 4
    点赞
  • 4
    评论
  • 14
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值