2013-03-23 164 views
0

我正在使用C#,并且我有一个WinForms应用程序。设置与面板尺寸相关的外形尺寸

我有一个主窗体,其中包含一些按钮,可以说按钮A和B. 我有另一种形式,FormB有2个不同尺寸的面板。

我想要做的是,当用户点击按钮A时,将显示FormB 第一个面板的尺寸并显示第一个面板。 并且当用户点击按钮B时将显示具有第二面板尺寸 的formB并呈现第二面板。

我知道如何在每种情况下呈现这些面板,但表格大小不会像我预期的那样变化。

我试图用Dock属性,并将其设置为填充..但没有任何反应。

private void FormB_Load(object sender, EventArgs e) 
    { 
     panel1.Location = panel2.Location = new Point(); 
     timer1.Start(); 

     if (!first) 
     { 
      panel1.Visible = false; 
      panel2.Visible = true; 
     } 
     else 
     { 
      panel1.Visible = true; 
      panel2.Visible = false; 
     } 
     this.Dock = DockStyle.Fill; 
    } 

回答

1

,因为你要设置的Panel不是Form的Dock属性你应该使用panel1.Dock = DockStyle.Fillpanel2.Dock = DockStyle.Fill,不this.Dock = DockStyle.Fill

private void FormB_Load(object sender, EventArgs e) 
    { 
     panel1.Location = panel2.Location = new Point(); 
     timer1.Start(); 

     if (!first) 
     { 
      panel1.Visible = false; 
      panel2.Visible = true; 
      panel2.Dock = DockStyle.Fill; 
     } 
     else 
     { 
      panel1.Visible = true; 
      panel2.Visible = false; 
      panel1.Dock = DockStyle.Fill; 
     } 
    } 

编辑但以前的代码将根据表格的大小而改变面板的大小。既然你要设置的窗体的大小是面板(S)的大小,那么你应该设置Form这样的Size属性:

private void FormB_Load(object sender, EventArgs e) 
    { 
     panel1.Location = panel2.Location = new Point(); 
     timer1.Start(); 

     if (!first) 
     { 
      panel1.Visible = false; 
      panel2.Visible = true; 
      this.Size = new Size(panel2.Size.Width + 16, panel2.Size.Height + 38); 
     } 
     else 
     { 
      panel1.Visible = true; 
      panel2.Visible = false; 
      this.Size = new Size(panel1.Size.Width + 16, panel1.Size.Height + 38); 
     } 
    } 
+0

我也试过我之前使用Size属性发布我的问题,但 它隐藏了面板的底部..我想我需要增加面板的高度..出于某种原因,它不会给我正确的面板高度..在设计视图中,我看到面板正确的需要......但在运行时它隐藏了底部的一些部分 – Elior 2013-03-23 21:11:21

+0

不,只是为了增加更多的高度和宽度,因为边界,我会编辑 – 2013-03-23 21:12:41

+0

谢谢我忘了边框! – Elior 2013-03-23 21:14:12