VB.NET:将一个字符串数组添加到数组中

时间:2012-10-09 08:07:57

标签: arrays vb.net

Module globalVariable

    Public tblScItem As New DataTable
    Public tempArray()
    Public index As Integer
    Public stringArr() As String

End Module

Private Sub txtQty_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtQty.TextChanged

    stringArr = New String() {"", txtItem.Text, Form2.cbGondola.SelectedItem, txtQty.Text, DateTime.Now, Form1.txtLoginId.Text}

    If txtItem.Text <> Nothing And txtQty.Text <> Nothing Then

        index = 0

        tempArray(index) = stringArr

        tblScItem.Rows.Add(tempArray)

        index += 1

    End If

End Sub

我的程序是一个库存获取程序,其工作方式是,当输入项目的数量时,它将显示在数据网格中,同时存储在数组中。整个事务完成后,整个数组将导出到txt文件。

我已声明一个数组stringArr来存储项目的所有细节。然后,我使用tempArray存储每个项目(其中包含stringArr个别索引中tempArray的所有详细信息。

Example: 
tempArray(0) = 'details of item 1 obtained from stringArr
tempArray(1) = 'details of item 2 obtained from stringArr
and so on

但是,在输入数量后,我一直得到'对象未设置为对象的实例'。

任何人都知道为什么?我需要帮助。

谢谢。

2 个答案:

答案 0 :(得分:1)

您收到错误消息是因为您尚未初始化tempArray变量。它只是对数组的引用,但它没有要引用的数组。

但是,您尝试将数组放入数组中,但DataRowCollection.Add method采用数组,而不是数组数组。

只需使用stringArr变量:

Private Sub txtQty_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtQty.TextChanged

  stringArr = New String() {"", txtItem.Text, Form2.cbGondola.SelectedItem, txtQty.Text, DateTime.Now, Form1.txtLoginId.Text}

  If txtItem.Text <> "" And txtQty.Text <> "" Then

    tblScItem.Rows.Add(stringArr)

  End If

End Sub

请注意,控件的Text属性永远不会是Empty,您应该检查它是否为空字符串。

如果要将行添加到DataTable以外的集合中,则不会使用数组,因为它不可调整大小。您可以使用List(Of String())

Public tempList As new List(Of String())

Private Sub txtQty_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtQty.TextChanged

  stringArr = New String() {"", txtItem.Text, Form2.cbGondola.SelectedItem, txtQty.Text, DateTime.Now, Form1.txtLoginId.Text}

  If txtItem.Text <> "" And txtQty.Text <> "" Then

    tempList.Add(stringArr)

    tblScItem.Rows.Add(stringArr)

  End If

End Sub

答案 1 :(得分:0)

为什么使用DataGrid和数组?只需使用datagrid并在数据表上调用Rows(0).ItemArray