使用TableLayout Panel将2D数组输出到表单

时间:2013-11-27 17:35:24

标签: vb.net visual-studio-2010

我正在尝试使用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

对于为什么不起作用的任何帮助或想法都将不胜感激!

1 个答案:

答案 0 :(得分:1)

您的代码中需要考虑以下几点:

ColumnCountRowCount是可以直接操作的整数属性。

您应该在内部循环中声明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}}
相关问题