Sustitución de la anterior con:
Using frm As New frmWithTableLayout
frm.SetupTableLayout(2, 3)
'create report Type'
Dim lblReportType As New Label
lblReportType.Text = "Report Type"
frm.LayoutControl(lblReportType, 0, 0)
Dim tbReportType As New System.Windows.Forms.TextBox()
tbReportType.Text = "Income"
frm.LayoutControl(tbReportType, 1, 0)
frm.ShowDialog()
End Using
Este es un truco total, pero esto parece funcionar ... Tal vez alguien va a venir con algo mejor:
Public Sub LayoutControl(ByVal c As Control, ByVal column As Integer, ByVal row As Integer)
If TypeOf c Is Label Then
Dim clabel As Label = DirectCast(c, Label)
clabel.TextAlign = ContentAlignment.TopCenter
clabel.Dock = DockStyle.Right
clabel.Margin = New Padding(clabel.Margin.Left, clabel.Margin.Top + 5, clabel.Margin.Right, clabel.Margin.Bottom)
ElseIf TypeOf c Is System.Windows.Forms.TextBox Then
Dim ctbox As System.Windows.Forms.TextBox = DirectCast(c, System.Windows.Forms.TextBox)
ctbox.Margin = New Padding(0, 3, 0, 3)
ctbox.TextAlign = HorizontalAlignment.Center
End If
TableLayoutPanel1.Controls.Add(c, column, row)
End Sub
Public Sub SetupTableLayout(ByVal numOfColumns As Integer, ByVal numOfRows As Integer)
TableLayoutPanel1.ColumnCount = numOfColumns
TableLayoutPanel1.RowCount = numOfRows
While TableLayoutPanel1.RowStyles.Count < TableLayoutPanel1.RowCount
TableLayoutPanel1.RowStyles.Add(New RowStyle())
End While
For Each row As RowStyle In TableLayoutPanel1.RowStyles
With row
.SizeType = SizeType.Percent
.Height = 100/TableLayoutPanel1.RowCount
End With
Next row
End Sub
@Bradley No hay ninguna razón para quitar la etiqueta de C#. Esta no es una pregunta específica del idioma y solo porque mi ejemplo estaba en VB.NET no lo convierte en una pregunta de VB.NET. Estoy abierto a todos los idiomas, justo en el momento en que estaba programando en VB.NET, por lo que el ejemplo fue más fácil de armar en VB.NET.Alguien que programa en C# podría encontrar una solución al problema ... – Denis
Olvidó agregar ColumnStyles. Haga esto en un formulario de muestra primero con el diseñador. Haga clic en el icono Mostrar todos los archivos en la ventana del Explorador de soluciones. Abra el nodo al lado del formulario y haga doble clic en el archivo Designer.vb. Mira el código que generó el diseñador. –
@Denis Solo lo convertiría en una etiqueta .net solo entonces, ya que dejó F # y otros lenguajes basados en .net. –