我试图在一个数组中添加一个供应商列表,然后我使用`.addrange`将其添加到listbox和combobox中,但我收到了错误信息。

问题描述 投票:0回答:1

我从数据库中提取了供应商名单,并将其保存在一个数组中。TOTAL_SUPPLIERS_ARRAY 现在我尝试在listbox或combobox中添加,但它在运行时显示一个错误,说 "VALUE CAN NOT BE NULL",但如果我尝试用循环添加它,它可以正常工作,为什么它不工作与 .addrange ?

 Sub GET_SUPPLIERS_DETAILS()

    Dim CON As New MySqlConnection("server=localhost; username=root; password=Masoom1; database=airtech_db;")
    Dim cmd As New MySqlCommand("Select * from `Suppliers`;", CON)
    Dim da As New MySqlDataAdapter("Select * from `Suppliers`;", CON)
    Dim ds As New DataSet
    Dim dr As MySqlDataReader
    Dim TOTAL_SUPPLIERS As Integer

    CON.Open()
    da.Fill(ds)
    dr = cmd.ExecuteReader
    TOTAL_SUPPLIERS = ds.Tables(0).Rows.Count
    Dim TOTAL_SUPPLIERS_ARRAY(TOTAL_SUPPLIERS) As String, ARRAYINDEX As Integer
    Do While dr.Read() = True
        TOTAL_SUPPLIERS_ARRAY(ARRAYINDEX) = dr("Supplier_Name").ToString()
        ARRAYINDEX += 1
    Loop
    CON.Close()
    Dim cbCell As New DataGridViewComboBoxCell
    For k = 0 To DataGridView1.Rows.Count - 1
        cbCell = DataGridView1.Rows(k).Cells("Supplier_Name")
        For iIndex = 0 To UBound(TOTAL_SUPPLIERS_ARRAY) - 1
            cbCell.Items.Add(TOTAL_SUPPLIERS_ARRAY(iIndex))
        Next
    Next


    ListBox1.Items.AddRange(TOTAL_SUPPLIERS_ARRAY)
    ComboBox1.Items.AddRange(TOTAL_SUPPLIERS_ARRAY)

    For I As Integer = 0 To UBound(TOTAL_SUPPLIERS_ARRAY) - 1
        TextBox1.Text += TOTAL_SUPPLIERS_ARRAY(I) & " - "
    Next I

End Sub

这个部分只有在我通过循环添加的时候才会工作。

For I As Integer = 0 To UBound(TOTAL_SUPPLIERS_ARRAY) - 1
   TextBox1.Text += TOTAL_SUPPLIERS_ARRAY(I) & " - "
Next I

listbox.addrange 指挥和 combobox.addrange 命令失效

vb.net winforms visual-studio-2019
1个回答
0
投票

这里你有一个问题 TOTAL_SUPPLIERS_ARRAY(TOTAL_SUPPLIERS). 在VB中声明的数组 - array(upper-bound). 上限是比计数少1。所以,你应该做 TOTAL_SUPPLIERS_ARRAY(TOTAL_SUPPLIERS - 1).

但为什么要挣扎呢?只要使用列表

Dim myList as New List(of String) 
While dr.Read()
    myList.Add(dr("Supplier_Name").ToString())
Loop

然后,如果你还需要数组,你可以使用LINQ--。myList.ToArray

ListBox1.DataSource = myList.ToArray()
© www.soinside.com 2019 - 2024. All rights reserved.