0

我的目标是在一个表单上获取用户输入的列信息并将其放在表单 2 的组合框中。我对编码和 vb.net 真的很陌生,请保留它以供假人使用。到目前为止,这是我在一种形式上所拥有的。

Public Class CrewDatabaseForm
    Public Shared CrewList As List(Of String)

    Private Sub CrewDatabaseForm_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
        Dim CL As New List(Of String)
        Dim CLPure As New List(Of String)
        For i As Integer = 0 To DataGridView1.RowCount - 1
            CL.Add(DataGridView1.Rows(i).Cells(0).Value.ToString)
        Next
        CLPure = CL.Distinct
        CrewList = CLPure
    End Sub

    Private Sub CrewDatabaseForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub
End Class

DataGridView1 只是我从工具箱中拖出的一个 DataGrid。我试图将第一列传递到一个列表中,使其与众不同,然后将其传递到一个公共列表中,以便该表单获取:

Public Class NewWellForm
    Private Sub NewWellForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ComboBox1.Items.Add(CLPure.Item(1))
    End Sub
End Class

在这里,我试图将列表放入 Combobox1

这里的 CLPure 带有下划线的波浪线,因此它不起作用。我究竟做错了什么?此外,我发现自己一直在努力从列表转换为数组到组合框再到列等等。是否有任何良好的一致性、语法或资源来学习如何在这些数据持有者之间进行转换?

谢谢

4

2 回答 2

0

由于您的CrewList字段是Shared,您应该能够从其他表单访问它,如下所示:

Private Sub NewWellForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ComboBox1.Items.AddRange(CrewDatabaseForm.CrewList.ToArray())
End Sub

AddRange方法允许您一次添加多个项目,但它需要您给它一个数组。由于CrewList是一个List(Of String),而不是数组,因此您需要在将其提供给AddRange方法之前将其转换为数组。方便的是,List(Of String)该类有一个ToArray方法可以使转换变得非常容易。

于 2013-09-23T13:31:48.443 回答
0

创建一个对象列表并在表单的 load 方法中填充组合框:

Object[] myList = new Object[] {4, 6, 8, 10, 12, 14, 16 };

private void myForm_Load(object sender, System.EventArgs e)
{
   comboBox1.Items.AddRange(myList);
}
于 2020-01-16T21:12:51.117 回答