将ListBox行拆分为3个值

时间:2013-01-17 15:21:14

标签: c# listbox split

我有三个值(名称,课程和平均值),分配给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个数组中的值并删除它们,然后将剩余的数组值向上移动。

3 个答案:

答案 0 :(得分:1)

如果保留列表框中项目的顺序,列表框的SelectedIndex应与原始数组中的索引匹配。所以,一旦你有了这个,你就可以将阵列向上移动(这非常繁琐)。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我建议你用其他东西(比如“;”)替换“,”(注意','之后的空格),然后使用带空格的split方法作为参数。

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

然后您可以通过替换“;”来更改结果[0]用“,”