Código vb:
Ver originalDim nuevobotonProd As New Button
'Creo las variables que definen el area de botones por fila
Dim bxf,contador as Integer
'Creo la variables que contendran las dimensiones de los botones
Dim altoBoton, anchoBoton as Integer
'Creo las variables de los puntos en los cuales empiezo a pintar los botones
Dim x,y as Integer
'-------------------------------------------------------------------------------------------
bxf = 4 'Por ejemplo defino 4 botones por fila
contador = 0
altoBoton= 90
anchoBoton = 60
x = 10
y = 10
'--------------------------------------------------------------------
Dim conlumna As New DataColumn
conlumna.ColumnName.Contains("Producto")
cmd.Connection = conexion
cmd.CommandText = "select Producto from Productos ORDER BY Orden ASC"
adapta.SelectCommand = cmd
adapta.Fill(undataset, "Productos")
For i As Integer = 0 To undataset.Tables("Productos").Rows.Count - 1
'Si alcanzo el maximo de columnas de la fila a pintar
if contador = bxf Then
'seteo el valor del contador
contador = 0
'doy la coordenada para que inicie otra fila para crear botones
y = y + altoBoton
End if
nuevobotonProd.BackColor = Color.Khaki
nuevobotonProd.Location = New Point(x, y)
nuevobotonProd.Size = New Size(altoBoton, anchoBoton)
nuevobotonProd.Text = undataset.rows(i).Item(0).toString()
Me.Controls.Add(nuevobotonProd)
'Aumento contador de columnas
contador = contador + 1
'aumento la coordenada para crear otro boton en la siguiente columna
x = x +anchoBoton
Next
Pruebalo porque lo hize a mano sin usar el visual, cualquier problema me informas. Saludos!.