2011-07-12 179 views
1

我只能使用此代碼將單個項目從一個列表框移動到另一個列表框。我嘗試使用MultiSimple & MultiExtended SelectionMode。將一個列表框中的多個項目添加到另一個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

@蒂姆·墨菲 - 感謝您的答覆。當我使用上面的代碼時,我得到這個錯誤 - '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瞭解您所做的事情和原因。 –

相關問題