如何使用相同大小的按钮填充Panel

Yod*_*oda 2 c# winforms

我有一个Panel,里面Panel是两个或更多(将来)按钮.

如何使这些按钮完全填充Panel并具有相同的大小,与应用程序运行期间的大小更改无关Panel

编辑:根据谈论调整大小事件的答案.问题是,当添加下一个按钮时,它不会自动调整其余按钮的大小.另外,据我所知,调整大小只会在Panel调整大小时发生,首先我必须仔细设置Designer中按钮的大小.理想的解决方案就像Java一样GridLayout- >不用担心任何按钮的大小.

在此输入图像描述

var*_*bas 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);
     }
 }
Run Code Online (Sandbox Code Playgroud)

此代码确保无论Panel1更改大小多少,任何数量的按钮都会填满所有水平空间.