2012-03-12 19 views
7

Tengo un panel con botones. mis botones son creados dinámicamente Quiero tener 4 filas con 4 botones cada una. pero solo tengo una filaEnvasado del controlador en el 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); 
      } 
     } 

resultado deseado:

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

Respuesta

2

Esta es la respuesta seguido por los comentarios de la respuesta de Treb.
Uso de bucle y utilizar módulo operador para izquierda propiedad.

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

Sólo se está moviendo botones a la derecha (horizontal) mediante el ajuste de la propiedad Left:

button.Left = lastButton.Right + 1; 

Si desea mover hacia abajo, es necesario ajustar la posición vertical en su lugar:

button.Top = lastButton.Bottom + 1; 

Como de esa manera deja la posición horizontal sin cambios, el nuevo botón debería aparecer directamente debajo del último.

EDITAR: Respondiendo tu comentario, ¿qué resultado deseas? ¿Es una)

X X X X 

o B)

X 
X 
X 
X 

o es C)

X 
X 
    X 
    X 

O con botones de líneas, Qué quiere decir algo así como D)

X | X | X | X 

o E)

X - X - X - X 
+0

pequeño error tipográfico en primera fila: Se refiere a "ajustar la propiedad' Left'" ;-) – brgerner

+0

Hmpf, y que desde el tipo que me pegó a la respuesta por 3 minutos !!! Gracias, lo corrigió ;-) – Treb

+0

gracias por su respuesta, pero no funciona. Ahora, los botones se colocan verticalmente –

Cuestiones relacionadas