【问题标题】:how do you loop thru a listbox and edit each line item in VB express 2010你如何循环遍历列表框并编辑 VB express 2010 中的每个行项目
【发布时间】:2012-08-22 23:16:38
【问题描述】:

我已经学习 VB 4 周了,我已经达到了我的知识极限。我当然可以向更有经验的程序员寻求帮助!!

我试图遍历我的列表框并删除每个行项目的前 4 个字符。

特别是我希望它表现得像这样:

列表框的第一行被选中并发送到字符串(减去第一个 4 个字符) 从列表框中删除列表框的第一行 列表框第一行的修改版本被添加到与原始列表相同位置的列表框中

列表框的下一行被选中...等... 重复直到整个列表框被修改

这是我如何尝试执行此操作的示例......它几乎可以工作:)

Dim 测试为字符串 测试 = ListBox1.SelectedItem.ToString.Substring(4) ListBox1.Items.RemoveAt(ListBox1.SelectedIndex) ListBox1.Items.Add(测试)

有人可以帮我填空吗? 提前感谢您的帮助

【问题讨论】:

    标签: loops listbox


    【解决方案1】:

    首先,请仔细检查一下,您是在循环吗?

    接下来,我们可以看看这一行:

    ListBox1.Items.RemoveAt(ListBox1.SelectedIndex) ListBox1.Items.Add(test)
    

    如果我理解正确,您将删除特定索引处的项目,然后将新字符串 test 添加回列表中。看看这个,http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.objectcollection.add.aspx,似乎 add 会将此项粘贴在列表框的末尾,但您正在删除指定索引处的某些内容。

    因此,您实际上并没有替换您可能认为要替换的内容。这是我最好的猜测。例如,如果您删除了列表中的第二个元素,但是当您将 test 放回列表中时,它会被添加到末尾。所以像 [a,b,c,d] 这样的东西变成了 [a,c,d,b]

    也许改成:

    ListBox1.Items.RemoveAt(ListBox1.SelectedIndex) ListBox1.Items.Insert(ListBox1.SelectedIndex, test)
    

    【讨论】:

      【解决方案2】:

      ListBox 项可以通过这种方式访问​​和编辑..

         listBox1.BeginUpdate();
      try {
        for(int i = listBox1.Items.Count - 1; i >= 0 ; i--) {
          // do with listBox1.Items[i]
      
        }
      } finally {
        listBox1.EndUpdate();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-02-15
        • 1970-01-01
        • 2020-10-30
        • 2021-06-24
        • 2023-03-19
        • 2023-02-10
        • 2017-05-27
        相关资源
        最近更新 更多