我的程序的目的是获取数据txt文件并对其进行编辑,和/或对其进行添加和减少。 文本文件格式如下:
Name|Address|Phone|# of people coming|isRSVP
在我尝试单击列表框中的一个名称之前,我的代码似乎一直在做它的工作,它需要搜索多维数组到将信息拉出并放置在一组文本框中,以便对其进行编辑。问题是我使用的 foreach 循环给了我一个越界异常。我尝试进入调试步骤以确保数组中的数据正确并查看进程。一切看起来都是正确的,但由于某些原因,在条件语句中person[0]==listbox1.selectedIndex
不会返回true,即使两者都与我在步骤中看到的相同。任何帮助将不胜感激。
这是我的代码:
StringBuilder newFile = new StringBuilder();
static string txtList= "guest_list.txt";
static string[] file = File.ReadAllLines(txtList);
static int x = file.Count();
string[,] list = new string[x ,5];
public void loadGuestList()
{
int count2 = 0;
foreach (string line in file)
{
string[] sliced = line.Split('|');
int count = 0;
list[count2, count] = sliced[0];
count++;
list[count2, count] = sliced[1];
count++;
list[count2,count] = sliced[2];
count++;
list[count2,count]= sliced[3];
count++;
list[count2, count] = sliced[4];
count++;
listBox1.Items.Add(list[count2,0]);
count2++;
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (string person in list)
{
if ( person[0].ToString()==listBox1.SelectedItem.ToString())
{
addTxt.Text = char.ToString(person[1]);
textPhone.Text = char.ToString(person[2]);
textPeople.Text = char.ToString(person[3]);
if (person[4] == 'n' )
{
}
else
{
chkRSVP.Checked = true;
}
break;
}
}
}
答案 0 :(得分:1)
问题出在这一行:
foreach (string person in list)
该列表被定义为string[,]
,当您为每个元素执行时,它将执行每个元素,而不仅仅是数据列。你真的应该做的事情如下:
for(int index = 0; index <= list.GetUpperBound(0); index++)
{
string slice1 = list[index, 0];
string slice2 = list[index, 1];
....
}
或切换为使用Dictionary<string, string[]>()
。
答案 1 :(得分:0)
尝试使用&#34; Person&#34; object和override equals()。现在你正试图将你的多维数组(list [0])放入一个字符串中,它会给你一个不想要的结果。你应该使用list [0,0]。
答案 2 :(得分:0)
与Adam Gritt达成一致,我测试了以下代码,它似乎有效:
callback=JSON_CALLBACK
问题是你如何迭代2d数组。创建“Person”类通常比尝试通过数组管理它更好。哦,是的,在尝试使用其中一个成员之前,通常最好检查一个列表框项目。