Vb.net 在WinForms中运行时生成和更改TableLayoutPanel

Vb.net 在WinForms中运行时生成和更改TableLayoutPanel,vb.net,winforms,tablelayoutpanel,Vb.net,Winforms,Tablelayoutpanel,我想知道如何在运行时在VB.NET WinForms中创建和更改TableLayoutPanel 我已经看过了,但我似乎不知道如何改变列/行的数量,即创建新列/行,也不知道如何更改任何单元格的值 我的目标是创建一个包含16个标签的4x4网格,其文本来自多维4x4整数数组 我目前的代码是: Dim table As New TableLayoutPanel table.ColumnCount = 4 table.RowCount = 4 table.RowStyles.Add(New RowSty

我想知道如何在运行时在VB.NET WinForms中创建和更改TableLayoutPanel

我已经看过了,但我似乎不知道如何改变列/行的数量,即创建新列/行,也不知道如何更改任何单元格的值

我的目标是创建一个包含16个标签的4x4网格,其文本来自多维4x4整数数组

我目前的代码是:

Dim table As New TableLayoutPanel
table.ColumnCount = 4
table.RowCount = 4
table.RowStyles.Add(New RowStyle(SizeType.Absolute, 8.0F))

这是基于MSDN示例的,但我不确定如何使用RowStyles.AddMultiple arguments方法。有人能解释一下吗?

我建议您使用Designer创建一个TableLayoutPanel,然后在您的case类中检查Designer.cs Designer.vb中自动生成的代码。下面是C语言中的一个小示例:

// tableLayoutPanel1
        // 
        this.tableLayoutPanel1.ColumnCount = 4;
        this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
        this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
        this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
        this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
        this.tableLayoutPanel1.Location = new System.Drawing.Point(252, 75);
        this.tableLayoutPanel1.Name = "tableLayoutPanel1";
        this.tableLayoutPanel1.RowCount = 4;
        this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
        this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
        this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
        this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
        this.tableLayoutPanel1.Size = new System.Drawing.Size(200, 100);
        this.tableLayoutPanel1.TabIndex = 4;
要将控件添加到TableLayout,请使用它的“控件”属性。例如:

  private void button2_Click(object sender, EventArgs e)
    {

        Label label = new Label();
        label.Text = "Hello!";
        tableLayoutPanel1.Controls.Add(label, 0, 0);

    }

enter code here

以下内容将在运行时创建TableLayoutPanel和所有标签。它是完全可调的,因为您有一个任意大小的二维数组,它将显示该数组中的所有值。使用此代码示例应该向您展示如何在运行时将行和列动态添加到TableLayoutPanel

公开课表格1 Friend WithEvents TableLayout作为TableLayoutPanel 私有数据数组,作为整数=新整数3,3{{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16} 公共亚新 '设计器需要此调用。 初始化组件 '在InitializeComponent调用之后添加任何初始化。 Me.AutoSizeMode=Windows.Forms.AutoSizeMode.growtandshrink Me.AutoSize=True TableLayout=新建TableLayoutPanel 具有表格布局 .Name=表格布局 .Margin=New System.Windows.Forms.Padding0,0,0,0 .ColumnCount=0 .RowCount=0 .Dock=DockStyle.Fill .AutoSizeMode=Windows.Forms.AutoSizeMode.GrowthandShrink .AutoSize=True 以 Me.Controls.AddTableLayout 端接头 私有子窗体1\u Loadsender作为对象,e作为EventArgs处理Me.Load 对于x=LBoundDataArray,1到UBoundDataArray,1 Me.TableLayout.ColumnCount+=1 Me.TableLayout.ColumnStyles.AddNew ColumnStyleSizeType.AutoSize 对于y=LBoundDataArray,2到UBoundDataArray,2 如果y=LBoundDataArray,则为2 Me.TableLayout.RowCount+=1 Me.TableLayout.RowStyles.AddNew ColumnStyleSizeType.AutoSize 如果结束 Dim lbl=新标签 带lbl .Name=lbl&x&y .TextAlign=ContentAlignment.MiddleCenter .Text=Value:&DataArray.GetValuex,y .Dock=DockStyle.Fill .AutoSize=True 以 Me.TableLayout.Controls.Addlbl,y,x 下一个 下一个 端接头 末级
您是否尝试过在visual studio中使用winforms designer向面板添加组件?生成的代码可能会帮助您根据需要调整它。如果您知道它是4x4,请将其添加为设计时组件,并在属性窗格中设置布局和属性,但我似乎无法更改每个框中的文本。你有什么想法吗?我是否需要在每个框中添加标签?@puropoix感谢您的建议,但我尝试看看是否可以将我在程序中使用的所有内容都放入实际代码中,因此设计器实际上是空白的。