2012-03-12 19 views
7

Ho un pannello con pulsanti. i miei pulsanti sono creati dinamicamente. Voglio avere 4 righe con 4 pulsanti ciascuna. ma ho solo una riga.Controller wrapping in panel

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); 
      } 
     } 

risultato desiderato:

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

risposta

2

Questa è la risposta seguita dai commenti di risposta di Treb.
Utilizzare per il ciclo e utilizzare modulo operatore per A sinistra proprietà.

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

Siete solo spostando pulsanti a destra (in senso orizzontale) regolando la proprietà Left:

button.Left = lastButton.Right + 1; 

Se si desidera spostare giù, è necessario regolare la posizione verticale invece:

In questo modo si lascia la posizione orizzontale invariata, il nuovo pulsante dovrebbe apparire direttamente sotto l'ultimo.

MODIFICA: In risposta al tuo commento, quale risultato vuoi? E 'una)

X X X X 

o B)

X 
X 
X 
X 

o è c)

X 
X 
    X 
    X 

O con pulsanti di linee, vuoi dire qualcosa come D)

X | X | X | X 

o E)

X - X - X - X 
+0

piccolo errore di battitura in 1 ° fila: si intende "la regolazione' proprietà Left'" ;-) – brgerner

+0

Hmpf, e che da ragazzo che mi ha battuto alla risposta da 3 minuti !!! Grazie, corretto ;-) – Treb

+0

grazie per la risposta, ma non funziona. Ora i pulsanti sono posizionati verticalmente –