我有一个Panel,里面Panel是两个或更多(将来)按钮.
如何使这些按钮完全填充Panel并具有相同的大小,与应用程序运行期间的大小更改无关Panel?
编辑:根据谈论调整大小事件的答案.问题是,当添加下一个按钮时,它不会自动调整其余按钮的大小.另外,据我所知,调整大小只会在Panel调整大小时发生,首先我必须仔细设置Designer中按钮的大小.理想的解决方案就像Java一样GridLayout- >不用担心任何按钮的大小.

你可以依靠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);
}
}
Run Code Online (Sandbox Code Playgroud)
此代码确保无论Panel1更改大小多少,任何数量的按钮都会填满所有水平空间.