2013-11-27 43 views
0

我有這個應用程序,其中幾個groupboxes在垂直線。他們可以單獨啓用和禁用。我希望始終將組合框對齊到頂部,而不管通常位於之間的組合框是否啓用。動態GroupBoxes始終對齊頂部

假設我們有三個groupboxes(1,2,3)。中間的一個(2)被禁用。通常其他兩個盒子(1,3)的位置不會受到這個影響。但我希望最後一個groupbox(3)能夠取代中間groupbox(2)通常會處於的位置。

任何想法如何完成這個最簡單的方法?

這是林目前做這心不是足夠好縮放

 if (isForgeIncluded == "True" | isForgeIncluded == "true") 
     { 
      forgeBox.Visible = true; 
      if (headerPic == "False" | headerPic == "false") 
      { 
       PictureBox1.Visible = false; 
       forgeBox.Location = new Point(6, 5); 
       pathBox.Location = new Point(6, 112); 
      } 
      else 
      { 
      } 
     } 
     else 
     { 
      forgeBox.Visible = false; 
      if (headerPic == "False" | headerPic == "false") 
      { 
       PictureBox1.Visible = false; 
       pathBox.Location = new Point(6, 5); 
      } 
      else 
      { 
       pathBox.Location = new Point(6, 168); 
      } 

     } 
+0

您能否展示如何創建GroupBox?你想禁用它們還是使它們不可見?如果他們在佈局控件上設置,則可能需要使LayoutControl不可見。 – Bit

回答

1

集groupbox2位置(X,Y)到groupbox3位置(X,Y),而你的groupbox2禁用 - 可能是從具體事件。

0

我設法找出了一個解決方案,這是「更動態」,但不是100%動態,因爲我將不得不手動添加新的GroupBox到數組。然而,這是行得通的,並且在開始時照顧了picturebox

int nextBoxLocation = 0; 
int boxHeightAdd = 0; 
int spacing = 6; 

if (headerPic == "True" | headerPic == "true") 
{ 
    PictureBox1.Visible = true; 
    nextBoxLocation = PictureBox1.Height + spacing; 
} 
if (isForgeIncluded == "True" | isForgeIncluded == "true") 
{ 
    forgeBox.Visible = true; 
} 

GroupBox[] boxes = {forgeBox , pathBox , typeBox}; 

foreach(GroupBox box in boxes) 
{ 
    if (box.Visible == true) 
    { 
     box.Location = new Point(6, nextBoxLocation); 
     boxHeightAdd = box.Height; 
    } 
    if (box.Name == "pathBox" && (minecraftPathVar == Environment.ExpandEnvironmentVariables("C:\\Users\\" + Environment.UserName + "\\AppData\\Roaming\\.minecraft"))) 
    { 
     defRadioPath.Visible = false; 
     minecraftRadioPath.Visible = false; 
     box.Height = 75; 
     boxHeightAdd = 75; 
    } 
    nextBoxLocation += boxHeightAdd + spacing; 
    boxHeightAdd = 0; 
}