C# 从包含 Class 的 ArrayList 动态创建表单标签
C# creating labels in Form dynamically from an ArrayList containing Class
我有一个程序应该显示一些标签 (10-50)。
我想将值存储在一个数组中,以便遍历它。
我发现了如何在 ArrayList 中存储不同的数据类型。
我有一个 Class hdinfoData 并将其分配给数组列表。
我以为我有类似具有不同数据类型的二维数组的东西。
我无法访问存储在数组列表中的值,因为它不是真正的二维数组,它只是一个包含对象的数组 (hdinfoData class)
正确的方法是什么?
我想动态创建标签对 "Label" "Value"。
另外我想改一下顺序。
ArrayList hdiData = new ArrayList();
hdinfoData a = new hdinfoData();
a.ID = 1;
a.Label = "USER";
a.Value = user;
a.PosX = 1;
a.PosY = 2;
hdiData.Add(a);
hdinfoData b = new hdinfoData();
b.ID = 2;
b.Label = "HOST";
b.Value = host;
hdiData.Add(b);
Label[] lbl = new Label[hdiData.Count];
int y = 50;
for (int i = 0; i < hdiData.Count; i++)
{
int x = 15;
lbl[i] = new Label();
lbl[i].Location = new System.Drawing.Point(x, y);
lbl[i].Text = (string)hdiData[i];
lbl[i].ForeColor = Color.White;
Form1.Controls.Add(lbl[i]);
y += 25;
}
internal class hdinfoData
{
public int ID { get; set; }
public string Label { get; set; }
public string Value { get; set; }
public int PosX { get; set; }
public int PosY { get; set; }
}
您最好使用 List<hdinfoData>
而不是 ArrayList
。然后像访问任何其他对象字段一样访问其元素的字段:
var hdiData = new List<hdinfoData>();
.................
lbl[i].Text = hdiData[i].Label;
我有一个程序应该显示一些标签 (10-50)。 我想将值存储在一个数组中,以便遍历它。 我发现了如何在 ArrayList 中存储不同的数据类型。 我有一个 Class hdinfoData 并将其分配给数组列表。 我以为我有类似具有不同数据类型的二维数组的东西。 我无法访问存储在数组列表中的值,因为它不是真正的二维数组,它只是一个包含对象的数组 (hdinfoData class)
正确的方法是什么? 我想动态创建标签对 "Label" "Value"。 另外我想改一下顺序。
ArrayList hdiData = new ArrayList();
hdinfoData a = new hdinfoData();
a.ID = 1;
a.Label = "USER";
a.Value = user;
a.PosX = 1;
a.PosY = 2;
hdiData.Add(a);
hdinfoData b = new hdinfoData();
b.ID = 2;
b.Label = "HOST";
b.Value = host;
hdiData.Add(b);
Label[] lbl = new Label[hdiData.Count];
int y = 50;
for (int i = 0; i < hdiData.Count; i++)
{
int x = 15;
lbl[i] = new Label();
lbl[i].Location = new System.Drawing.Point(x, y);
lbl[i].Text = (string)hdiData[i];
lbl[i].ForeColor = Color.White;
Form1.Controls.Add(lbl[i]);
y += 25;
}
internal class hdinfoData
{
public int ID { get; set; }
public string Label { get; set; }
public string Value { get; set; }
public int PosX { get; set; }
public int PosY { get; set; }
}
您最好使用 List<hdinfoData>
而不是 ArrayList
。然后像访问任何其他对象字段一样访问其元素的字段:
var hdiData = new List<hdinfoData>();
.................
lbl[i].Text = hdiData[i].Label;