2011-07-12 9 views
1

このコードでは、1つのアイテムを1つのリストボックスから別のリストボックスに移動することしかできません。私はMultiSimple & MultiExtended SelectionModeの両方で試しました。複数のアイテムを1つのリストボックスから別のVB.Netに追加する

複数のアイテムを選択して移動するにはどうすればよいですか?

Private Sub cmdAdd_Click(ByVal sender As System.Object, 
         ByVal e As System.EventArgs 
         ) Handles cmdAdd.Click 

     Dim i As Integer = Listbox1.SelectedIndex 

     If i = -1 Then 
      Exit Sub 'skip if no item is selected 
     End If 

     Listbox2.Items.Add(Listbox1.Items(i)) 
     Listbox1.Items.RemoveAt(i) 

    End Sub 

答えて

2

SelectedIndicesまたはSelectedItemsを使用する必要があります。

Private Sub cmdAdd_Click(ByVal sender As System.Object, 
         ByVal e As System.EventArgs 
         ) Handles cmdAdd.Click 

    Dim selectedItems = (From i In ListBox1.SelectedItems).ToArray() 

    For Each selectedItem In selectedItems 

     Listbox2.Items.Add(selectedItem) 
     Listbox1.Items.Remove(selectedItem) 

    Next 

End Sub 

選択された項目のリストを配列として取得するために、Linqクエリを使用することに注意してください。 「コレクションが変更されました」という例外を防ぐには、配列を使用する必要があります。 System.Linqへの参照を追加する必要があるかもしれません。

+0

@ Tim Murphy - 返信ありがとうございます。上記のコードを使用するとこのエラーが発生します。 'ToArray'は 'System.Windows.Forms.ListBox.SelectedObjectCollection'のメンバーではありません。 リファレンスとしてSystem.Linqも追加しました – User124726

+0

System.Linqをインポートしていますか?プロジェクトまたはコードファイルの一番上で行うことができます:Imports System.Linq。 –

+0

@ Tim Murphy - はい、コードラインの先頭に、私はImports System.Linqを挙げました – User124726

0
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    ComboBox1.Items.Add("SanDiego") 
    ComboBox1.Items.Add("BeverlyHills") 
    ComboBox1.Items.Add("Florida") 
    ComboBox1.Items.Add("NewYork") 
End Sub 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim s As String 
    s = ComboBox1.SelectedItem 

    ListBox1.Items.Add(s) 
    ComboBox1.Items.Remove(s) 
End Sub 
+0

あなたのコードに説明を追加すると、OPがあなたのしたこととその理由を理解するのに役立ちます。 –

関連する問題