1

我有三个值(名称、课程和平均值),它们分配给 3 个数组。我不得不将它们组合起来并将它们放在一个列表框中。现在,我需要能够选择同一行并将其分成 3 个变量。

我的列表框输出如下所示:

Lastname, firstname     SEC360    93.5

我试图用空格进行拆分,但这打破了我的姓氏和名字,它们需要是一个包含逗号的组合变量(我需要对照放置它的数组检查它)。我也不能做子串,因为我没有设定值。有任何想法吗?

编辑:对不起大家。我是一个没有经验的程序员(至少可以说)并且是这个网站的新手。

这是我加载数组的地方:

studentNamesAr[studentCount] = studentNameTxtBox.Text;
courseAr[studentCount] = courseNumTxtBox.Text;
gradesAr[studentCount, 0] = Convert.ToInt32(grade1TxtBox.Text);
gradesAr[studentCount, 1] = Convert.ToInt32(grade2TxtBox.Text);
gradesAr[studentCount, 2] = Convert.ToInt32(grade3TxtBox.Text);
gradesAr[studentCount, 3] = Convert.ToInt32(grade4TxtBox.Text);

这是我将数组加载到列表框的地方:

for (int i = 0; i != studentCount; i++)
        {
            studentAvg = ((gradesAr[i, 0] + gradesAr[i, 1] + gradesAr[i, 2] + gradesAr[i, 3]) / 4);
            studentListBox.Items.Add(string.Format("{0, -20} {1, 20} {2, 20:F1}", studentNamesAr[i], courseAr[i], studentAvg));
        }

是的,这是 Windows 窗体。

数组中的数据不会丢失。当程序运行时,我应该有 5 个条目。我需要将它们拆分回来,以便当我从列表框中选择一个(删除它)时,我会在 3 个数组中找到值并删除它们,然后将剩余的数组值向上移动。

4

3 回答 3

1

如果您保留列表框中项目的顺序,则列表框的 SelectedIndex与原始数组中的索引匹配。所以一旦你有了它,你就可以开始移动你的阵列(这很乏味)。

作为记录,有更好的结构可以用来解决这个问题,但我假设使用数组的规定是家庭作业的一部分。:)

于 2013-01-17T15:59:39.720 回答
0

您可以在 .Tag 属性中保存由其他分隔符分隔的值。

于 2013-01-17T15:40:19.097 回答
0

我建议您将“,”(注意“,”后面的空格)替换为其他内容(例如“;”),然后使用带有空格作为参数的拆分方法。

string s = "Lastname, firstname SEC360 93.5";
string[] result = s.Replace(", ", ";").Split(' ');

那么您可以通过替换“;”来更改结果 [0] 和 ”, ”

于 2013-01-17T15:40:26.197 回答