我正在尝试使用tablelayout面板将2D数组输出到表单,但是当我运行我编写的代码时,表单没有显示任何内容(尽管在运行时实际上没有出现任何错误),所以我不确定为什么这不起作用?
这是我的代码:
Sub OutputUsingTableLayoutPanel(ByRef arrtruthtable(,) As String)
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim TableRowsToAdd As Integer = itruthtablerows - 1
Dim TableColumnsToAdd As Integer = itruthtablecolumns - 1
Dim NewLabel As New Label()
TableLayoutPanel1.RowStyles.Add(New RowStyle(SizeType.AutoSize))
TableLayoutPanel1.ColumnStyles.Add(New ColumnStyle(SizeType.AutoSize))
Do Until i = TableColumnsToAdd
TableLayoutPanel1.ColumnCount += 1
i += 1
Loop
Do Until j = TableRowsToAdd
TableLayoutPanel1.RowCount += 1
j += 1
Loop
Do Until k = TableLayoutPanel1.ColumnCount
Do Until l = TableLayoutPanel1.RowCount
TableLayoutPanel1.Controls.Add(NewLabel, k, l)
NewLabel.Name = "lbl" & k & l
NewLabel.Text = arrtruthtable(k, l)
l += 1
Loop
k += 1
l = 0
Loop
End Sub
对于为什么不起作用的任何帮助或想法都将不胜感激!
答案 0 :(得分:1)
您的代码中需要考虑以下几点:
ColumnCount
和RowCount
是可以直接操作的整数属性。
您应该在内部循环中声明NewLabel
,以便添加的每个都是一个新对象。
在将NewLabel
添加到tablelayoutpanel
Dim test(,) As String = {{"A", "A1"}, {"B", "B1"}, {"C", "C1"}}
OutputUsingTableLayoutPanel(test)
Sub OutputUsingTableLayoutPanel(ByRef arrtruthtable(,) As String)
Dim TableRowsToAdd As Integer = arrtruthtable.GetLength(0)
Dim TableColumnsToAdd As Integer = arrtruthtable.GetLength(1)
TableLayoutPanel1.RowStyles.Add(New RowStyle(SizeType.AutoSize))
TableLayoutPanel1.ColumnStyles.Add(New ColumnStyle(SizeType.AutoSize))
TableLayoutPanel1.ColumnCount = TableColumnsToAdd
TableLayoutPanel1.RowCount = TableRowsToAdd
For k = 0 To TableColumnsToAdd - 1
For l = 0 To TableRowsToAdd - 1
Dim NewLabel As New Label()
NewLabel.Name = "lbl" & k & l
NewLabel.Text = arrtruthtable(l, k)
TableLayoutPanel1.Controls.Add(NewLabel, k, l)
Next
Next
End Sub
的属性
For循环,对于这种类型的迭代,更直观,更易于阅读。
2维数组按行,列索引,但tablelayoutpanel使用列,行
当您需要访问传递到子例程的数组时,您可以获得各个维度的长度,而不是依赖于全局变量。
这里有一些修改后的代码:
TableLayoutPanel1.ColumnCount = TableColumnsToAdd
TableLayoutPanel1.RowCount = TableRowsToAdd
TableLayoutPanel1.RowStyles.Clear()
For I = 1 To TableRowsToAdd
TableLayoutPanel1.RowStyles.Add(New RowStyle(SizeType.Percent, 100 \ TableRowsToAdd))
Next
TableLayoutPanel1.ColumnStyles.Clear()
For I = 1 To TableColumnsToAdd
TableLayoutPanel1.ColumnStyles.Add(New ColumnStyle(SizeType.Percent, 100 \ TableColumnsToAdd))
Next
这是获得格式化的简单方法:
{{1}}