gpt4 book ai didi

c# - 如何基于数组列表创建动态按钮

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:21 25 4
gpt4 key购买 nike

我在创建基于 NamesDA 类中的列表动态创建按钮的 foreach 循环时遇到了一些问题。

我收到如下错误:无法将类型“Program1.Names”转换为“int”。我已经尝试了我所知道的修复转换错误的方法,但我不知道正确的方法。

编辑 1: allNames 是 NamesDA 中的一个数组列表,它读取一个 csv 文件。它返回一个字符串和 int 的列表,然后它们将用于创建按钮并表示它们。

编辑 2: foreach 循环问题现在已解决,但我无法获取按钮文本的 column[0] 和按钮标签的 column[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]);
}

最佳答案

从更新中可以清楚地看出 allNamesList<Names> , 其中Names是一个包含两个属性/字段的类,一个是 int 类型(假设为 _id ),另一个是字符串类型(假设为 _name )。所以你必须像下面这样重新创建循环:

更新:您也可以设置按钮位置,如果您需要必须在类中定义两个整数属性(设为 int positionX=10int PositionY=30)现在看看更新后的代码:

int nextLeft=30;

foreach (Names name in allNames)
{
Button tempButton = new Button();
tempButton.Name = name._id;
tempButton.Text = name._name;
tempButton.Location = new System.Drawing.Point(name.positionX + nextLeft,name.positionY);
listView.Controls.Add(tempButton);
nextLeft+=30;
}

关于c# - 如何基于数组列表创建动态按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38908236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com