要微调控件在其容器中的位置,可以修改其Margin
属性。
假设您有控件在列表中居中:
List<Control> ctls = new List<Control>();
foreach (Control c in flowLayoutPanel1.Controls) ctls.Add(c);
您可以调用一个函数来对齐它们:
void centerControls(List<Control> ctls, Control container)
{
int w = container.ClientSize.Width;
int marge = (w - ctls.Sum(x => x.Width)) / 2;
Padding oldM = ctls[0].Margin;
ctls.First().Margin = new Padding(marge, oldM.Top, oldM.Right, oldM.Bottom);
ctls.Last().Margin = new Padding(oldM.Left, oldM.Top, oldM.Right, marge);
}
添加或删除控件后,请调用该函数:
centerControls(ctls, flowLayoutPanel1);
您将需要重新设置的Margins
,当你添加新的按钮..
请注意,我只更改外部Margins
,而不更改它们之间的空间。要执行后者,您可以计算空间并更改Margins
所有控件:
void spaceControls(List<Control> ctls, Control container)
{
int w = container.ClientSize.Width;
int marge = (w - ctls.Sum(x => x.Width)) / (ctls.Count * 2 );
Padding oldM = ctls[0].Margin;
Padding newM = new Padding(marge, oldM.Top, marge, oldM.Bottom);
foreach (Control c in ctls) c.Margin = newM;
}
也要考虑一下,当一行以上时会发生什么RadioButtons
!您可能需要在清单上做更多的工作。
另外请注意,用户不喜欢其控件跳很多!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句