【问题标题】:How can I programmatically set the Column and Row properties of controls that are dynamically created to embed within a TableLayoutPanel?如何以编程方式设置动态创建以嵌入 TableLayoutPanel 的控件的 Column 和 Row 属性?
【发布时间】:2012-08-13 22:42:43
【问题描述】:

当我在 TableLayoutPanel 上放置一个控件(例如 Label 或 TextBox)时,它具有(当然还有许多其他属性)以下属性:

Cell.Column
Cell.Row
Column
Row

...但是这些控件通常不具有这些属性(IOW、标签和未放置在 TLP 上的文本框没有它们)。

如何以编程方式将值分配给这些属性(分配给我想嵌入到 TLP 中的控件)?

这是我现有的标签代码:

. . .
lblName = string.Format("label{0}", i);
var lbl = new Label()
{
    Name = lblName,
    Parent = tableLayoutPanelPlatypi,
    Column = ColNum, // Doesn't compile; Column property not recognized
    Row = i - 1,     // Doesn't compile; Row property not recognized
    Dock = DockStyle.Fill,
    Margin = 0,
    TextAlign = ContentAlignment.MiddleCenter,
    Text = GettysburgAddressObfuscation()
};

【问题讨论】:

    标签: c# winforms dynamic tablelayoutpanel


    【解决方案1】:

    您可以通过 TableLayoutPanel 的控件 Add 方法添加它们:

    tableLayoutPanelPlatypi.Controls.Add(lbl, ColNum, i - 1);
    

    或者正如您所指出的,每个属性都可以单独设置:

    tableLayoutPanelPlatypi.SetColumn(lbl, ColNum);
    tableLayoutPanelPlatypi.SetRow(lbl, i - 1);
    

    表单的设计器会为您方便地添加这些属性,但如果您在设计器文件中查看已添加到 TableLayoutPanel 的控件,它会使用上面的格式。

    【讨论】:

    • 谢谢;这也有效:tableLayoutPlatypi.SetColumn(lbl, ColNum); tableLayoutPanelPlatypi.SetRow(lbl, i); ...但我更喜欢你的方式(“一站式购物”)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2023-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2012-08-20
    • 1970-01-01
    相关资源
    最近更新 更多