2011-07-12 126 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了解您所做的事情和原因。 –

相关问题