Ya lo solucioné esta probado!
Código vb:
Ver originalFor 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 + anchoBoton
x = 10
End if
Dim nuevobotonProd As New Button
nuevobotonProd.BackColor = Color.Khaki
nuevobotonProd.Location = New Point(x, y)
nuevobotonProd.Size = New Size(altoBoton, anchoBoton)
nuevobotonProd.Text = undataset.Tables("Productos").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 +altoBoton
Next
Ahora no creo que te salga error
Cualquier cosa avisame. Saludos!