【问题标题】:Issue splitting ListBox line back into 3 values问题将 ListBox 行拆分回 3 个值
【发布时间】:2013-01-17 15:21:13
【问题描述】:

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

【问题讨论】:

  • 1.) 阅读this。 2.) 您将它们组合成ListBox 的任何特殊原因? (提示:先做1,2会回答。)
  • 只使用列表框索引并使用原始值会更容易,但听起来您在进行选择时不再拥有原始数组?
  • 当你把它们结合起来的时候,为什么不这样结合呢? Lastname|firstname|SEC360 93.5 然后你可以对管道字符进行拆分。
  • @TyrionLannister 你是说这个问题的可读性不足以提供答案吗?
  • 我很抱歉。是的,这是 Windows 窗体。我已经编辑并添加了更多信息。如果您需要我提供更多信息,请告诉我!

标签: c# listbox split


【解决方案1】:

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

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

【讨论】:

  • 如何向上移动阵列?
  • 我让他想办法。不想失去所有乐趣。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我建议你把“,”(注意','后面的空格)换成别的东西(比如“;”),然后用空格作为参数的split方法。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 1970-01-01
      • 2020-09-02
      相关资源
      最近更新 更多