Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重用创建的控件_C#_Winforms - Fatal编程技术网

C# 重用创建的控件

C# 重用创建的控件,c#,winforms,C#,Winforms,我有一个2列的TableLayoutPanel。(第一列包含字段名,另一列包含字段值) 所以我创建了这些控件,我想做的是重用它们,以便将数据插入表中 lbl.Text = "field1"; txt.Text = "value1"; tableLayoutPanel.Controls.Add(lbl,0,0) tableLayoutPanel.Controls.Add(txt,1,0) lbl.Text = "field2"; txt.Text = "value2"; tableLayoutP

我有一个2列的TableLayoutPanel。(第一列包含字段名,另一列包含字段值)

所以我创建了这些控件,我想做的是重用它们,以便将数据插入表中

lbl.Text = "field1";
txt.Text = "value1";
tableLayoutPanel.Controls.Add(lbl,0,0)
tableLayoutPanel.Controls.Add(txt,1,0)

lbl.Text = "field2";
txt.Text = "value2";
tableLayoutPanel.Controls.Add(lbl,0,1)
tableLayoutPanel.Controls.Add(txt,1,1)

这不管用。它将只添加字段2和值2。即使我先设置lbl.name=“smt”,然后再设置lbl.name=“smtElse”,它也不会工作。

您不能以这种方式重用控件。每次创建控件时(例如,
新标签(…)
),该控件创建的唯一对象只能在父窗口(或其他容器控件)中存在一次。如果更改其属性(包括将其放置在另一个容器中),它将更新(包括移动)该控件

要放置控件的两个实例,需要创建该控件的两个实例

lbl.Text = "field1";
txt.Text = "value1";
tableLayoutPanel.Controls.Add(lbl,0,0)
tableLayoutPanel.Controls.Add(txt,1,0)

lbl.Text = "field2";
txt.Text = "value2";
tableLayoutPanel.Controls.Add(lbl,0,1)
tableLayoutPanel.Controls.Add(txt,1,1)