我有两个ListBox1
和ListBox2
。我已使用以下代码将项目插入ListBox2
,方法是选择ListBox1
项目:
da6 = New SqlDataAdapter("select distinct(component_type) from component where component_name='" & ListBox1.SelectedItem() & "'", con)
da6.Fill(ds6, "component")
For Each row As DataRow In ds6.Tables(0).Rows
ListBox2.Items.Add(row.Field(Of String)("component_type"))
Next
但是当我重新选择ListBox1
的另一个项目时,ListBox2
会显示预加载的项目和现在加载的项目。
我只希望现在加载的项目显示在列表框中。
我使用了这段代码,但问题没有解决:
For i =0 To ListBox2.items.count - 1
ListBox2.Items.removeAt(i)
Next
OR
listbox2.items.clear()
也无效..
如何清除ListBox2
中的所有项目?
答案 0 :(得分:8)
简单地使用:
ListBox2.Items.Clear()
MSDN:ListBox.ObjectCollection.Clear
从集合中删除所有项目。
请注意,您的方法存在的问题是RemoveAt
会更改所有剩余项目的索引。
从列表中删除项目时,索引将更改为 列表中的后续项目。有关已删除项目的所有信息 被删除。您可以使用此方法从中删除特定项目 通过指定要从列表中删除的项的索引来列出。至 指定要删除的项而不是项的索引,使用 删除方法。 要从列表中删除所有项目,请使用“清除” 方法强>
如果你想使用RemoveAt
,你可以倒退,例如:
for
- 循环:
For i As Int32 = ListBox2.Items.Count To 0 Step -1
ListBox2.Items.RemoveAt(i)
Next
或while
While ListBox2.Items.Count > 0
ListBox2.Items.RemoveAt(ListBox2.Items.Count - 1)
End While
旧C#代码
for (int i = ListBox2.Items.Count - 1; i >= 0; i--)
ListBox2.Items.RemoveAt(i);
while(ListBox2.Items.Count > 0)
ListBox2.Items.RemoveAt(ListBox2.Items.Count - 1);
击> <击> 撞击>
答案 1 :(得分:4)
答案 2 :(得分:4)
此代码对我有用:
ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
答案 3 :(得分:3)
有一种删除所选项目的简单方法,所有这些人都想采用一种简单的方法:
lstYOURVARIABLE.Items.Remove(lstYOURVARIABLE.SelectedItem)
我在Visual Studio上以Visual Basic模式使用它。
答案 4 :(得分:1)
这是我提出的用于从列表框中删除用户选择的项目的代码它似乎在多选列表框中工作正常(selectionmode prop设置为multiextended)。:
Private Sub cmdRemoveList_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdRemoveList.Click
Dim knt As Integer = lstwhatever.SelectedIndices.Count
Dim i As Integer
For i = 0 To knt - 1
lstwhatever.Items.RemoveAt(lstwhatever.SelectedIndex)
Next
End Sub
答案 5 :(得分:1)
我认为你的ListBox已经清楚了ListBox2.Items.Clear()。问题是您还需要使用ds6.Tables.Clear()清除以前结果中的数据集。
在您的代码中添加:
da6 = New SqlDataAdapter("select distinct(component_type) from component where component_name='" & ListBox1.SelectedItem() & "'", con)
ListBox1.Items.Clear() ' clears ListBox1
ListBox2.Items.Clear() ' clears ListBox2
ds6.Tables.Clear() ' clears DataSet <======= DON'T FORGET TO DO THIS
da6.Fill(ds6, "component")
For Each row As DataRow In ds6.Tables(0).Rows
ListBox2.Items.Add(row.Field(Of String)("component_type"))
Next
答案 6 :(得分:0)
我已经测试过,它运行正常
For i =0 To ListBox2.items.count - 1
ListBox2.Items.removeAt(0)
Next
答案 7 :(得分:0)
这对我有用。
Private Sub listbox_MouseDoubleClick(sender As Object, e As MouseEventArgs)
Handles listbox.MouseDoubleClick
listbox.Items.RemoveAt(listbox.SelectedIndex.ToString())
End Sub
答案 8 :(得分:-1)
Dim ca As Integer = ListBox1.Items.Count().ToString
While Not ca = 0
ca = ca - 1
ListBox1.Items.RemoveAt(ca)
End While