vb.net - 从列表中移动一个项目并将其从前一个列表中删除
问题描述
抱歉,我在 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
但我想知道如何让每个人都一样
解决方案
恕我直言,有更好的方法来做到这一点:
创建一个新表单,在其上放置 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
运行程序并双击各种列表框中的各种项目
推荐阅读
- jquery - jQuery `keypress` 事件没有为 div 触发
- c# - 如何在 azure function app v2 启动中调用一些代码逻辑
- python - 用于 Django 前端的 HTML 模板或 React?
- powershell - 在&运算符中传递参数值中的变量 - Powershell
- python - 是否有可能导入子模块的具体方式?
- razor - 在 razor 中的 html 中遇到 razor 的问题
- node.js - 无法安装节点 12.8
- rest - 有没有办法通过使用 REST api(或任何客户端解决方案)在 Sharepoint 上保存大量数据?
- elasticsearch - 在 Elastic Search 7.x 中删除连接关系
- mysql - LEFT JOIN 返回不相关的数据,它应该是 NULL