vb.net ListBox select 多个项目并以父形式传递到数组

vb.net ListBox select multiple items and pass into array in parent form

我正在使用此代码填充 vb.net

中的列表框
conn.Open()
        SQL = "select company from customer order by company ASC"
        myCommand.Connection = conn
        myCommand.CommandText = SQL
        reader = myCommand.ExecuteReader
        While reader.Read()
            ListBox1.Items.Add(reader.GetString(0))
        End While

此代码以名为 customers 的形式运行,我在初始形式 (form1)

上使用 customers.show()

一旦在 customers 表单中选择了项目,我如何将所有值传递回准备好处理数据的父表单?

我希望这对您有所帮助,但我不太确定您想要什么。 此代码将所选项目传递到某些列表框中的 "Form1" :

  Private Sub Button_Click(sender As Object, e As EventArgs) Handles Some_Button_in_Customers_Form.Click
     For Each itm in Listbox1.SelectedItems
        Form1.Some_ListBox.Items.Add(itm)
     Loop
     'if you want to end form after passing customers UnHighlight next line
     'Me.Close()
  End Sub

如果您不想在客户表单中添加按钮,请在您的代码后使用下一个代码:

  Dim btn as New Button
  AddHandler btn.Click, AddressOf Button_Click
  btn.PerformClick()

和处理程序代码将没有 "Handles Some_Button_in_Customers_Form.Click" 像这样:

  Private Sub Button_Click(sender As Object, e As EventArgs)
     For Each itm in Listbox1.SelectedItems
        Form1.Some_ListBox.Items.Add(itm)
     Loop
     'if you want to end form after passing customers UnHighlight next line
     'Me.Close()
  End Sub

你可以使用ListBox1的SelectedItems 属性,得到所有选中的item集合,然后你可以使用cast扩展方法将这个集合转换成可枚举的字符串,再转换成列表或数组。

Public Function getSelectedItems()
      return ListBox1.SelectedItems.Cast(of String).Tolist()
End Function

然后使用 customers 表单实例从 Form1 中调用此函数