3

と の 2 つが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ですか?

4

9 に答える 9

7

簡単に使用します:

ListBox2.Items.Clear()
  • 最後の編集を考慮に入れるには:新しいアイテムを追加する前にそれを行います

MSDN:ListBox.ObjectCollection.Clear

コレクションからすべてのアイテムを削除します。

あなたのアプローチの問題は、RemoveAt残りのすべてのアイテムのインデックスを変更することです。

リストからアイテムを削除すると、リスト内の後続のアイテムのインデックスが変更されます。削除されたアイテムに関するすべての情報が削除されます。このメソッドを使用して、リストから削除するアイテムのインデックスを指定することにより、リストから特定のアイテムを削除できます。アイテムのインデックスではなく、削除するアイテムを指定するには、Remove メソッドを使用します。リストからすべての項目を削除するには、Clear メソッドを使用します

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);

于 2013-01-17T12:48:08.067 に答える
5

このコードは私のために働いた:

ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)

于 2015-02-03T20:09:12.817 に答える
4

リスト ボックスをクリアするだけの場合は、Clear ( winforms | wpf | asp.net ) メソッドを使用する必要があります。

ListBox2.Items.Clear()
于 2013-01-17T12:48:14.387 に答える
2

リストボックスからユーザーが選択したアイテムを削除するために思いついたコードは次のとおりです。複数選択リストボックスでは問題なく動作するようです (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
于 2014-01-05T02:04:17.290 に答える
2

すでにテスト済みで、正常に動作します

For i =0 To ListBox2.items.count - 1
ListBox2.Items.removeAt(0)
Next
于 2015-10-08T22:51:28.523 に答える
-1
   Dim ca As Integer = ListBox1.Items.Count().ToString
    While Not ca = 0
        ca = ca - 1
        ListBox1.Items.RemoveAt(ca)
    End While
于 2015-12-15T15:44:01.610 に答える