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

时间:2014-01-06 17:36:32

标签: c# winforms

我有PanelPanel内有两个或更多(将来)按钮。

如何使这些按钮完全填满Panel并且在应用程序运行期间Panel尺寸更改的独立大小相同?

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

enter image description here

1 个答案:

答案 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的大小发生多大变化,任意数量的按钮都会填满所有水平空间。