以编程方式设置 row/column 跨度
set row/column span programmatically
我正在尝试创建一个动态布局来显示数据库中的数据,因为我正在使用一个 tablelayoutpanel 并且我将它放到了它把数据放在我想要它去的字段中的位置,但是我可以'弄清楚我将如何为某些字段提供行或列跨度,因为其中一些需要遍历多个字段
这是我用来创建需要 columnspan 的标签之一的代码
tableLayoutPanel1.Controls.Add(new Label()
{ Text = stat, Dock = DockStyle.Fill, BackColor = Color.Green, AutoSize = true }
, 7, row);
我在 SO 上搜索了一个解决方案,我确实找到了一些可以设置 columnspan 的解决方案,但它们不能与我创建标签的方式一起使用。
tableLayoutPanel1.SetRowSpan([control name],[rowspan] );
//[] is what is supposed to be placed there
因为这是我找到的代码,而且因为我在代码中创建了标签,所以我无法提供控件名称。
(很有可能是我的失误)
设置标签的 ColumnSpan 属性。
经过更多搜索,我找到了一种方法。
而不是尝试这样做:
tableLayoutPanel1.Controls.Add(new Label()
{ Text = naam, Dock = DockStyle.Fill, BackColor = Color.Green, AutoSize = true }
, 2, row);
我现在正在创建需要像这样的 columnspan 的标签
var label = new Label();
label.Text = naam;
label.Dock = DockStyle.Fill;
label.BackColor = Color.Red;
label.AutoSize = true;
tableLayoutPanel1.Controls.Add(label);
tableLayoutPanel1.SetCellPosition(label, new TableLayoutPanelCellPosition(2, row));
tableLayoutPanel1.SetColumnSpan(label, 2);
如果您可以添加 identifying Name
属性:
,则您的原始代码将有效
tableLayoutPanel1.Controls.Add(new Label()
{ Name = "L1", Text = stat, Dock = DockStyle.Fill,
BackColor = Color.Green, AutoSize = true }, 7, row);
现在您可以使用 Name
:
tableLayoutPanel1.SetRowSpan(tableLayoutPanel1.Controls["L1"], 2 );
要创建 Name
,您可以使用 Controls.Count
属性:
string name = "L" + tableLayoutPanel1.Controls.Count.ToString("00");
添加方法通常是return void
。如果你想对项目进行操作,那么在调用 Add()
(构造完整对象)之前进行操作或者以 正常方式 [=13 创建一个实例是有意义的=]
var item = new Label() { Text = stat, Dock = DockStyle.Fill, BackColor = Color.Green, AutoSize = true };
// do something with item here
tableLayoutPanel1.Controls.Add(item, 7, row);
// or do something with item here, e.g.:
tableLayoutPanel1.SetColumnSpan(item, 2);
我正在尝试创建一个动态布局来显示数据库中的数据,因为我正在使用一个 tablelayoutpanel 并且我将它放到了它把数据放在我想要它去的字段中的位置,但是我可以'弄清楚我将如何为某些字段提供行或列跨度,因为其中一些需要遍历多个字段
这是我用来创建需要 columnspan 的标签之一的代码
tableLayoutPanel1.Controls.Add(new Label()
{ Text = stat, Dock = DockStyle.Fill, BackColor = Color.Green, AutoSize = true }
, 7, row);
我在 SO 上搜索了一个解决方案,我确实找到了一些可以设置 columnspan 的解决方案,但它们不能与我创建标签的方式一起使用。
tableLayoutPanel1.SetRowSpan([control name],[rowspan] );
//[] is what is supposed to be placed there
因为这是我找到的代码,而且因为我在代码中创建了标签,所以我无法提供控件名称。 (很有可能是我的失误)
设置标签的 ColumnSpan 属性。
经过更多搜索,我找到了一种方法。 而不是尝试这样做:
tableLayoutPanel1.Controls.Add(new Label()
{ Text = naam, Dock = DockStyle.Fill, BackColor = Color.Green, AutoSize = true }
, 2, row);
我现在正在创建需要像这样的 columnspan 的标签
var label = new Label();
label.Text = naam;
label.Dock = DockStyle.Fill;
label.BackColor = Color.Red;
label.AutoSize = true;
tableLayoutPanel1.Controls.Add(label);
tableLayoutPanel1.SetCellPosition(label, new TableLayoutPanelCellPosition(2, row));
tableLayoutPanel1.SetColumnSpan(label, 2);
如果您可以添加 identifying Name
属性:
tableLayoutPanel1.Controls.Add(new Label()
{ Name = "L1", Text = stat, Dock = DockStyle.Fill,
BackColor = Color.Green, AutoSize = true }, 7, row);
现在您可以使用 Name
:
tableLayoutPanel1.SetRowSpan(tableLayoutPanel1.Controls["L1"], 2 );
要创建 Name
,您可以使用 Controls.Count
属性:
string name = "L" + tableLayoutPanel1.Controls.Count.ToString("00");
添加方法通常是return void
。如果你想对项目进行操作,那么在调用 Add()
(构造完整对象)之前进行操作或者以 正常方式 [=13 创建一个实例是有意义的=]
var item = new Label() { Text = stat, Dock = DockStyle.Fill, BackColor = Color.Green, AutoSize = true };
// do something with item here
tableLayoutPanel1.Controls.Add(item, 7, row);
// or do something with item here, e.g.:
tableLayoutPanel1.SetColumnSpan(item, 2);