你好我是csharp的新手,我实验很多,看到并解决了难题,但是一个是一个新的错误,我以前没见过:
“[]内的索引数量错误;预期为1”
,我试图谷歌并尝试以我自己的方式解决它,但我没有找到解决方案。谁能帮助我解决这个问题并说出我做错了什么?
public Form1()
{
InitializeComponent();
}
class Planeet
{
public String Naam;
public Byte Grootte;
public Brush Kleur;
public short Afstand;
public Planeet(String argNaam, Byte argGrootte, Brush argKleur, short gAfstand)
{
Naam = argNaam;
Grootte = argGrootte;
Kleur = argKleur;
Afstand = argAfstand;
}
}
private void pbZonnestelsel_Click(object sender, EventArgs e)
{
Planeet[] arrPlaneten = new Planeet[9]
{
new Planeet("Mercurius", 4, Brushes.DarkGray, 4),
new Planeet("Venus", 10, Brushes.White, 20),
new Planeet("Aarde", 10, Brushes.LightBlue, 40),
new Planeet("Mars", 5, Brushes.Red, 60),
new Planeet("Jupiter", 112, Brushes.Orange, 80),
new Planeet("Saturnus", 94, Brushes.Beige, 200),
new Planeet("Uranus", 40, Brushes.Green, 300),
new Planeet("Neptunus", 38, Brushes.Blue, 350),
new Planeet("Pluto", 2, Brushes.LightGray, 400)
};
for (int i = 0; i < arrPlaneten.GetLength(0); i++)
{
listBox1.Items.Add(arrPlaneten[i, 0,0,0]);
listBox1.Items.Add(arrPlaneten[0, i, 0,0]);
}
}
}
}
答案 0 :(得分:3)
你在这做什么,没有意义。因为你有一维数组,并将其视为第四维数组。当您循环遍历for循环中的所有行星时,也不需要第二次添加到列表框中。
for (int i = 0; i < arrPlaneten.GetLength(0); i++)
{
listBox1.Items.Add(arrPlaneten[i, 0,0,0]);
listBox1.Items.Add(arrPlaneten[0, i, 0,0]);
}
你想要完成什么?将行星添加到列表框?你会这样:
for (int i = 0; i < arrPlaneten.GetLength(0); i++)
{
listBox1.Items.Add(arrPlaneten[i]);
}
注意强>
您的Planeet
类需要实现ToString(),否则列表框中不会显示任何内容。所以添加
public String ToString() { return this.Naam; }
你的班级就像这样:
class Planeet
{
public String Naam;
public Byte Grootte;
public Brush Kleur;
public short Afstand;
public Planeet(String argNaam, Byte argGrootte, Brush argKleur, short argAfstand)
{
Naam = argNaam;
Grootte = argGrootte;
Kleur = argKleur;
Afstand = argAfstand;
}
public String ToString()
{
return Naam; //Or add more info here like return Naam + " " + Afstand;
}
}
第二个注释:列表框可以包含任何对象的项目列表。但是,如果您不想引用对象,而只想引用它的名称,则应该改为listBox1.Items.Add(arrPlaneten[i].Naam)
。
您的代码中short argAfstand
也有拼写错误,其中显示short gAfstand
答案 1 :(得分:0)
在listBox1.Items.Add(arrPlaneten[i, 0,0,0]);
中,您为数组提供了四个以逗号分隔的索引,这是一个语法错误。如果要从数组中检索元素,请执行以下操作:
for (int i = 0; i < arrPlaneten.GetLength(0); i++)
{
listBox1.Items.Add(arrPlaneten[i]);
}
只使用一个索引!
答案 2 :(得分:0)
看起来你正在尝试错误地寻址阵列。您将其编入索引,就像它有四个维度一样。
如果您尝试将所有项目添加到列表框中,则可以执行以下操作:
foreach(Planeet aPlanet in arrPlaneten)
{
listbox1.Items.Add(aPlanet);
}
但是,您需要在类中重写ToString,以使列表框条目有意义......
或者您可以使用数据绑定listbox1.DataSource = arrPlaneten;
并选择Listbox1.displayMember = "Naam"