Vb.net 如何重命名ListBox控件中的所有项

Vb.net 如何重命名ListBox控件中的所有项,vb.net,listbox,Vb.net,Listbox,如何重命名列表框包含以下项目 C:\Logs\2016-09-28-2.log C:\Logs\2016-09-28-1.log 到 C:\Logs\2016-09-28-2.log.gz C:\Logs\2016-09-28-1.log.gz假设您使用的是WinForms,您可以通过修改列表框中项目的属性。这将返回ListBox.ObjectCollection。您可以索引到此集合并修改各个项目 通常,列表框中的项目只是字符串,因此将新字符串指定给项目集合中的相应索引将更改列表框中的文本。但是

如何重命名
列表框
包含以下项目

C:\Logs\2016-09-28-2.log

C:\Logs\2016-09-28-1.log

C:\Logs\2016-09-28-2.log.gz


C:\Logs\2016-09-28-1.log.gz

假设您使用的是WinForms,您可以通过修改列表框中项目的属性。这将返回ListBox.ObjectCollection。您可以索引到此集合并修改各个项目

通常,列表框中的项目只是字符串,因此将新字符串指定给项目集合中的相应索引将更改列表框中的文本。但是,它们实际上可以是任何类型的对象。首先检查将项目添加到列表框的代码,以确保它们是字符串。如果它们是其他内容,则需要相应地修改该数据结构

要对列表中的所有项执行此操作,您需要使用一个循环来遍历整个items集合

例如:

For i As Integer = 0 to (myListBox.Items().Count - 1)
    myListBoxItems.Items(i) = myListBox.Items(i) + ".gz"
Next

如果不能保证列表框中的所有项都应添加扩展名
.gz
,则需要在循环体内部使用一条条件语句,首先测试字符串的当前值,以决定是否附加扩展名。

若要获得最低解决方案,请尝试以下代码

Dim MyList = (From lst In ListBox1.Items.Cast(Of String)() Select lst & ".gz").ToList

ListBox1.DataSource = MyList

在执行代码时出现错误,
System.Windows.Forms.dll中发生了类型为“System.ArgumentOutOfRangeException”的未经处理的异常,
其他信息:“1”的InvalidArgument=值对“index”无效。
,尽管我找到了解决方法,所以问题现在已经解决,感谢您的尝试。对于myListBox.Items(),i As Integer=0的循环应该是
。Count-1
(带:减一)当然应该是。谢谢,奥利弗!在将来,请不要羞于编辑来修复我答案中的代码错误。我知道不是每个人都喜欢这个,但我看不出有什么不对。我经常错过评论,因为我每天都会收到成百上千的通知,只是没有时间一一浏览。我碰巧看到了这个,所以我已经修复了代码。