2012-03-12 54 views
7

我有一個帶按鈕的面板。我的按鈕是動態創建的。我想要4行,每個4個按鈕。但我只得到一行。控制器在面板中環繞

foreach (CategoriesDataSet.CategoriesRow category in DataRepository.Categories.Categories) 
     { 
      if (!category.CategoryName.Equals("ROOT")) 
      { 
       SimpleButton button = new SimpleButton(); 
       button.Text = category.CategoryName; 
       button.Tag = category.CategoryId; 
       button.Size = new Size(82, 70); 


       if (lastButton != null) 
        button.Left = lastButton.Right + 1; 


       lastButton = button; 
       button.Click += CategoryButtonClick; 
       categoriesPanel.Controls.Add(button); 
      } 
     } 

期望的結果:

x x x x 
X x x x 
x x x x 

回答

2

這就是答案,然後TREB的答案的評論。
使用循環和使用運算符爲財產。

for (int i = 0; i < DataRepository.Categories.Categories.Count; i++) 
{ 
    CategoriesDataSet.CategoriesRow category = DataRepository.Categories.Categories[i]; 

     if (!category.CategoryName.Equals("ROOT")) 
     { 
      SimpleButton button = new SimpleButton(); 
      button.Text = category.CategoryName; 
      button.Tag = category.CategoryId; 
      button.Size = new Size(82, 70); 

      button.Left = i%4*82; 
      button.Top = i*70; 

      button.Click += CategoryButtonClick; 
      categoriesPanel.Controls.Add(button); 
     } 
    } 
1

您僅通過調整Left財產移動按鈕向右(水平):如果你想將它們向下移動

button.Left = lastButton.Right + 1; 

,你需要調整垂直位置,而不是:

button.Top = lastButton.Bottom + 1; 

由於這樣你離開水平位置不變,新的按鈕應該直接出現在最後一個下面。

編輯: 在回答你的評論,你要哪個結果?難道A)

X X X X 

或B)

X 
X 
X 
X 

或者是C)

X 
X 
    X 
    X 

或用按鈕用線,你的意思是這樣d)

X | X | X | X 

或E)

X - X - X - X 
+0

小錯字在第1行:你的意思是「調整'Left'財產」 ;-) – brgerner 2012-03-12 09:13:19

+0

哼,以及從誰3分鐘打我答案的傢伙!謝謝,糾正它;-) – Treb 2012-03-12 09:16:39

+0

感謝您的迴應,但它不起作用。現在,按鈕垂直放置 – 2012-03-12 09:43:42