首页 > 解决方案 > 从列表中移动一个项目并将其从前一个列表中删除

问题描述

抱歉,我在 form1 中有三个链接列表,在 form2 中有三个链接列表(同名),我想将 form1 的链接列表中的特定选定链接项传递给 form 2 的链接列表。

    For Each lists In {frm2.lst1, frm2.lst2, frm2.lst3}
            lists.Items.Add(DirectCast(Controls(lists.Name), ListBox).SelectedItem) 
    'this is supposed to add the linked items on the form1 (DirectCast(Controls(lists.Name), ListBox).SelectedItem) to the linked lists on form2
                DirectCast(Controls(lists.Name), ListBox).Items.RemoveAt(DirectCast(Controls(lists.Name), ListBox).SelectedIndex)
'this is supposed to removes the selected linked items on the form1 
            Next

如果我这样做,它会起作用:

Dim a = lst1.selectedindex
    For Each lists In {frm2.lst1, frm2.lst2, frm2.lst3}
     lists.Items.Add(DirectCast(Controls(lists.Name), ListBox).SelectedItem) 
    Next
    For Each lists In {frm2.lst1, frm2.lst2, frm2.lst3}
    DirectCast(Controls(lists.Name), ListBox).Items.RemoveAt(a)
    Next

但我想知道如何让每个人都一样

标签: vb.net

解决方案


恕我直言,有更好的方法来做到这一点:

创建一个新表单,在其上放置 4 个列表框(命名为 listbox1、2、3 和 4)并将此代码粘贴到:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim d As New DataTable
    d.Columns.Add("ShowText")
    d.Columns.Add("WhichList", GetType(Integer))

    d.Rows.Add("I started in LB1", 1)
    d.Rows.Add("I started in LB1 too", 1)
    d.Rows.Add("I started in LB1 also", 1)
    d.Rows.Add("I started in LB2", 2)
    d.Rows.Add("I started in LB2 too", 2)
    d.Rows.Add("I started in LB2 also", 2)
    d.Rows.Add("I started in LB3", 3)
    d.Rows.Add("I started in LB3 too", 3)
    d.Rows.Add("I started in LB3 also", 3)


    ListBox1.DataSource = New DataView(d) With {.RowFilter = "[WhichList] = 1"}
    ListBox1.DisplayMember = "ShowText"
    ListBox2.DataSource = New DataView(d) With {.RowFilter = "[WhichList] = 2"}
    ListBox2.DisplayMember = "ShowText"
    ListBox3.DataSource = New DataView(d) With {.RowFilter = "[WhichList] = 3"}
    ListBox3.DisplayMember = "ShowText"
    ListBox4.DataSource = New DataView(d) With {.RowFilter = "[WhichList] = 4"}
    ListBox4.DisplayMember = "ShowText"
End Sub



Private Sub ListBoxX_DoubleClick(sender As Object, e As EventArgs) Handles ListBox1.DoubleClick, ListBox2.DoubleClick, ListBox3.DoubleClick
    DirectCast(DirectCast(sender, ListBox).SelectedItem, DataRowView).Row("WhichList") = 4
End Sub

运行程序并双击各种列表框中的各种项目

在此处输入图像描述


推荐阅读