winform 控件随窗体的变化而变化

来源:互联网 发布:北京pk10软件手机软件 编辑:程序博客网 时间:2024/04/29 19:28

winform在排版页面格局时,可以使用layoutcontrol对控件进行排版,但是排列起来比较麻烦,要用到很多emptyspaceitem(我只这样弄的,不知道其他的人怎么弄,也许是我用的不熟练的原因)。网上也有很多的关于控件如何随窗体变化而变化,下面我总结了一下用的比较好用的,并自己稍微完善了一下。

设置窗体最小尺寸,即miniumsize属性,不能拖拽窗体变小。否则窗体变小的话,一些字体并不随之改变,会使格局发生变化。

public void AutoScale(Form frm)

        {

            frm.Tag = frm.Width.ToString()+ "," + frm.Height.ToString();

           

            frm.SizeChanged += newEventHandler(frm_SizeChanged);

        }

        staticvoid frm_SizeChanged(object sender, EventArgs e)

        {

            string[]tmp = ((Form)sender).Tag.ToString().Split(',');

            floatwidth = (float)((Form)sender).Width / (float)Convert.ToInt16(tmp[0]);

            floatheigth = (float)((Form)sender).Height / (float)Convert.ToInt16(tmp[1]);

 

            ((Form)sender).Tag = ((Form)sender).Width.ToString() + ","+ ((Form)sender).Height;

 

            foreach(Control controlin ((Form)sender).Controls)

            {

                control.Scale(new SizeF(width, heigth));

 

            }

        }

 

 

        privatevoid Form_Load(object sender, EventArgs e)

        {

            CommonFunctionsfun = new CommonFunctions();

            fun.AutoScale(this);

        }



原创粉丝点击