请问C#如何实现控件随窗体的变化而变化大小(WinForm程序) 5
我在网上看到一段代码publicstaticvoidAutoScale(Formfrm){frm.Tag=frm.Width.ToString()+","+frm.Hei...
我在网上看到一段代码
public static void AutoScale(Form frm)
{
frm.Tag = frm.Width.ToString() + "," + frm.Height.ToString();
frm.SizeChanged += new EventHandler(frm_SizeChanged);
}
static void frm_SizeChanged(object sender, EventArgs e)
{
string[] tmp = ((Form)sender).Tag.ToString().Split(',');
float width = (float)((Form)sender).Width / (float)Convert.ToInt32(tmp[0]);
float heigth = (float)((Form)sender).Height / (float)Convert.ToInt32(tmp[1]);
((Form)sender).Tag = ((Form)sender).Width.ToString() + "," + ((Form)sender).Height;
foreach (Control control in ((Form)sender).Controls)
{
control.Scale(new SizeF(width, heigth));
}
}
这两个方法虽然好用,但当窗体最小化时,控件会变形,而且,同时打开两个窗体的时候,一个窗体可以正常显示,而另一个窗体不能正常使用,
请教应该如何解决 展开
public static void AutoScale(Form frm)
{
frm.Tag = frm.Width.ToString() + "," + frm.Height.ToString();
frm.SizeChanged += new EventHandler(frm_SizeChanged);
}
static void frm_SizeChanged(object sender, EventArgs e)
{
string[] tmp = ((Form)sender).Tag.ToString().Split(',');
float width = (float)((Form)sender).Width / (float)Convert.ToInt32(tmp[0]);
float heigth = (float)((Form)sender).Height / (float)Convert.ToInt32(tmp[1]);
((Form)sender).Tag = ((Form)sender).Width.ToString() + "," + ((Form)sender).Height;
foreach (Control control in ((Form)sender).Controls)
{
control.Scale(new SizeF(width, heigth));
}
}
这两个方法虽然好用,但当窗体最小化时,控件会变形,而且,同时打开两个窗体的时候,一个窗体可以正常显示,而另一个窗体不能正常使用,
请教应该如何解决 展开
3个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询