我有Panel
,Panel
内有两个或更多(将来)按钮。
如何使这些按钮完全填满Panel
并且在应用程序运行期间Panel
尺寸更改的独立大小相同?
编辑:根据谈论调整大小事件的答案。问题是,当添加下一个按钮时,它不会自动调整其余按钮的大小。另外,据我所知,只有在Panel
调整大小时才会调整大小,首先我必须仔细设置Designer中按钮的大小。理想的解决方案就像Java的GridLayout
- >不用担心任何按钮的大小。
答案 0 :(得分:5)
您可以依靠面板的SizeChanged
事件来获得您想要的内容。示例代码:
private void Form1_Load(object sender, EventArgs e)
{
panel1.Dock = DockStyle.Fill;
panel1.SizeChanged += panel1_SizeChanged;
}
private void panel1_SizeChanged(object sender, EventArgs e)
{
resizeButtons();
}
private void resizeButtons()
{
int totButtons = panel1.Controls.OfType<Button>().Count();
Point curPos = new Point(0, 0);
foreach(Button but in panel1.Controls.OfType<Button>())
{
but.Width = panel1.Width / totButtons;
but.Location = curPos;
curPos = new Point(curPos.X + but.Width, 0);
}
}
此代码确保无论Panel1
的大小发生多大变化,任意数量的按钮都会填满所有水平空间。