0

我已经学习 VB 4 周了,我已经达到了我的知识极限。我当然可以从更有经验的程序员那里得到一些帮助!!

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

具体来说,我希望它表现得像这样:

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

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

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

暗淡测试 As String test = ListBox1.SelectedItem.ToString.Substring(4) ListBox1.Items.RemoveAt(ListBox1.SelectedIndex) ListBox1.Items.Add(test)

有人可以帮我填空吗?在此先感谢您的帮助

4

2 回答 2

0

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

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

  }
} finally {
  listBox1.EndUpdate();
}
于 2012-08-23T05:15:53.120 回答
0

首先,只是为了仔细检查一下,你是在循环吗?

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

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)
于 2012-08-22T23:33:17.703 回答