我在创建foreach循环时遇到问题,该循环根据NamesDA类中的List动态创建按钮。
我收到的错误如下:无法转换类型' Program1.Names' to' int'。我已经尝试了所有我知道的修复转换错误,但我不知道正确的方法。
编辑1: allNames是NamesDA中读取csv文件的数组列表。 它返回一个字符串和int的列表,然后它们将用于创建按钮并表示它们。
编辑2:现在解决了foreach循环问题,但是我无法获取按钮文本的列[0]和按钮标记的列[1]的值。
NamesDA类:
private const string path = "names.csv";
public static List<Names> GetNames()
{
StreamReader textIn = new StreamReader(new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read));
List<Names> allNames = new List<Names>();
while (textIn.Peek() != -1)
{
string row = textIn.ReadLine();
string[] columns = row.Split(',');
allNames.Add(new Names(columns[0].ToString(), Convert.ToInt16(columns[1])));
}
textIn.Close();
return allNames;
}
表格:
int startTop = 20;
int startLeft = 17;
allNames = NamesDA.GetNames(); //calling the method in the NamesDA class
foreach (int x in allNames) {
names[x] = new Button();
tempButton.Text = ""; //based on the list column[0]
tempButton.Tag = ""; //based on the list column[1]
names[x].Location = new System.Drawing.Point(startTop + (x * 95), startLeft);
listView.Controls.Add(names[x]);
}
答案 0 :(得分:1)
从更新中可以清楚地看出allNames
是List<Names>
,其中Names
是一个类包含两个属性/字段,一个是int类型(让它为{{1}另一个是string类型(让它为_id
)。所以你必须重新创建循环,如下所示:
更新:您也可以设置按钮位置,如果需要,您必须在类中定义两个整数属性(让它为_name
和int positionX=10
)现在看一下更新的代码:
int PositionY=30