C#WinForm控件布局变乱问题
事情是这样的:一个Form1面板上有很多控件,我用代码已经控制好了,控件可随窗体大小而自动缩放,但是当把该Form1缩小到任务栏的时候,再恢复到正常状态,控件的布局就乱了...
事情是这样的:一个Form1面板上有很多控件,我用代码已经控制好了,控件可随窗体大小而自动缩放,但是当把该Form1缩小到任务栏的时候,再恢复到正常状态,控件的布局就乱了..不知诸位可碰过这情况?我的缩放代码如下:public static void AutoScale(MForm MF)
{
MF.Tag = MF.Width.ToString() + "," + MF.Height.ToString();
MF.SizeChanged += new EventHandler(MF.MForm_SizeChanged);
}
private void MForm_Resize(object sender, EventArgs e)
{
string[] tmp = new string[2];
try
{
tmp = ((Form)sender).Tag.ToString().Split(',');
}
catch
{
tmp = new string[2];
tmp[0] = "1244";
tmp[1] = "719";
}
float width = (float)((Form)sender).Width / (float)Convert.ToInt16(tmp[0]);
float heigth = (float)((Form)sender).Height / (float)Convert.ToInt16(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));
}
}
就是想问问大家如何更改才可以使缩小到任务栏后再恢复原状不会变乱?
我这代码是正确的..点击右上角最小化和最大化控件缩放都是正常的,只是直接最小化到任务栏然后复原,控件就乱了.. 展开
{
MF.Tag = MF.Width.ToString() + "," + MF.Height.ToString();
MF.SizeChanged += new EventHandler(MF.MForm_SizeChanged);
}
private void MForm_Resize(object sender, EventArgs e)
{
string[] tmp = new string[2];
try
{
tmp = ((Form)sender).Tag.ToString().Split(',');
}
catch
{
tmp = new string[2];
tmp[0] = "1244";
tmp[1] = "719";
}
float width = (float)((Form)sender).Width / (float)Convert.ToInt16(tmp[0]);
float heigth = (float)((Form)sender).Height / (float)Convert.ToInt16(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));
}
}
就是想问问大家如何更改才可以使缩小到任务栏后再恢复原状不会变乱?
我这代码是正确的..点击右上角最小化和最大化控件缩放都是正常的,只是直接最小化到任务栏然后复原,控件就乱了.. 展开
展开全部
这个是布局的问题,一般我们在窗体设计的时候都会对控件进行位置的设置。
比如说:
FORM1 为 600*600 那么你的的控件正确摆放位置也只限于这个范围内。如果你想在最大化为1024*768 那么控件的位置肯定会发生改变。以致最大化后的窗体一部分地方是空白的,
以600*600为列子
解决方案一:你可以在设计的时候把窗体的长宽定格在600*600,不让用户最大化,当然你想设计成1024*768也是可以的。
解决方案二:采用流布局:工具箱里边容器里有一个:FlowLayoutPanel的控件。你可以把这个控件Panel加进你的FORM,再在这个布局控件上面添加你的控件。这样,不管你的窗体初始大小是多大都可以使你的窗体在最大化的时候,或者改变窗体大小的时候,里边的控件也随着一起变大或者变小。不影响界面!
没有看懂继续提问
比如说:
FORM1 为 600*600 那么你的的控件正确摆放位置也只限于这个范围内。如果你想在最大化为1024*768 那么控件的位置肯定会发生改变。以致最大化后的窗体一部分地方是空白的,
以600*600为列子
解决方案一:你可以在设计的时候把窗体的长宽定格在600*600,不让用户最大化,当然你想设计成1024*768也是可以的。
解决方案二:采用流布局:工具箱里边容器里有一个:FlowLayoutPanel的控件。你可以把这个控件Panel加进你的FORM,再在这个布局控件上面添加你的控件。这样,不管你的窗体初始大小是多大都可以使你的窗体在最大化的时候,或者改变窗体大小的时候,里边的控件也随着一起变大或者变小。不影响界面!
没有看懂继续提问
展开全部
有两种方法:
1 先将你的代码删除,或者先注释,设定anchor属性,这样控件的边界就会跟窗体的边界始终保持一定的距离而不管窗体如何缩放
2 anchor可以做到固定缩放,但无法做到按比例缩放,如果能确定你上述的代码是正确的,那么就双击窗体的resize事件,然后在该事件中调用你的这个函数
1 先将你的代码删除,或者先注释,设定anchor属性,这样控件的边界就会跟窗体的边界始终保持一定的距离而不管窗体如何缩放
2 anchor可以做到固定缩放,但无法做到按比例缩放,如果能确定你上述的代码是正确的,那么就双击窗体的resize事件,然后在该事件中调用你的这个函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我初学的时候也遇到过这个问题,其实控件都有anchor属性的 控制其与父容器的边距 你可以试下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用panel控件,把控件进行分区,然后设置空间的Dock和Anchor属性。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题解决了吗 没有我有源代码需要吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询