我试图制作一个动态布局来显示来自数据库的数据,因为我使用了tablelayoutpanel,我把它放到了将数据放入我想要的字段的地方但是我无法弄清楚如何给出一些行或列跨度的字段,因为其中一些字段需要遍历多个字段
这是我用来创建一个需要一个柱子
的标签的代码tableLayoutPanel1.Controls.Add(new Label()
{ Text = stat, Dock = DockStyle.Fill, BackColor = Color.Green, AutoSize = true }
, 7, row);
我在SO上搜索了一个解决方案,我确实找到了一些可以设置列数的方法,但是他们不会按照我创建标签的方式工作。
tableLayoutPanel1.SetRowSpan([control name],[rowspan] );
//[] is what is supposed to be placed there
因为这是我找到的代码,因为我在代码中创建了标签,所以我不能给出控件名称。 (由于我犯了错误,这很可能)
答案 0 :(得分:0)
设置标签的ColumnSpan属性。
答案 1 :(得分:0)
经过一番搜索,我发现了一种方法。 而不是试图这样做:
tableLayoutPanel1.Controls.Add(new Label()
{ Text = naam, Dock = DockStyle.Fill, BackColor = Color.Green, AutoSize = true }
, 2, row);
我现在正在创建需要像这样的柱子的标签
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);
答案 2 :(得分:0)
如果您可以添加标识 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");
答案 3 :(得分:0)
添加方法通常会返回void
。如果你想对项目进行操作,那么在调用Add()
(构造完整对象)或以正常方式
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);