Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Visual Basic问题获取要从文本文件填充的列表框_Arrays_Vb.net_Listbox - Fatal编程技术网

Arrays Visual Basic问题获取要从文本文件填充的列表框

Arrays Visual Basic问题获取要从文本文件填充的列表框,arrays,vb.net,listbox,Arrays,Vb.net,Listbox,我陷入困境,多次尝试重新编写代码,但无法找到解决方案。该应用程序有一个文本文件,其中包含顺序访问文件中的项目和价格。从列表框中选择时,应用程序应显示与项目对应的价格。文本文件中的每一行都包含商品编号,后跟逗号和价格 我需要定义一个名为item的结构。该结构有2个成员变量,一个用于存储商品编号的字符串和一个用于存储价格的十进制数。我还需要声明一个具有5个项结构变量的类级数组。负载甚至应该读取项目和价格,并将这些信息存储在类级数组中。然后将项目编号添加到列表框中 这是我到目前为止所做的,但没有任何效

我陷入困境,多次尝试重新编写代码,但无法找到解决方案。该应用程序有一个文本文件,其中包含顺序访问文件中的项目和价格。从列表框中选择时,应用程序应显示与项目对应的价格。文本文件中的每一行都包含商品编号,后跟逗号和价格

我需要定义一个名为item的结构。该结构有2个成员变量,一个用于存储商品编号的字符串和一个用于存储价格的十进制数。我还需要声明一个具有5个项结构变量的类级数组。负载甚至应该读取项目和价格,并将这些信息存储在类级数组中。然后将项目编号添加到列表框中

这是我到目前为止所做的,但没有任何效果

Option Explicit On
Option Strict On
Option Infer Off

Public Class frmMain
    'declare structure with 2 member variables
    Structure Item
        Public strItemNum As String
        Public decPrice As Decimal
    End Structure

    'declare array for 5 item structure variables
    Private items(4) As Item

    Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
        Me.Close()
    End Sub

    Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
        'declare variables
        Dim inFile As IO.StreamReader
        Dim strLineofText As String
        Dim intSub As Integer

        'check if the file exists
        If IO.File.Exists("ItemInfo.txt") Then
            'open the file
            inFile = IO.File.OpenText("ItemInfo.txt")
            'read the file
            Do Until inFile.Peek = -1 OrElse
                intSub = items.Length
                strLineofText = inFile.ReadLine.Trim
                'add item to list box
                lstNumbers.Items.Add(items(intSub).strItemNum)
            Loop
            'close the file
            inFile.Close()

        Else
        MessageBox.Show("Can't find the ItemInfo.txtfile",
                       "Kensington Industries",
                       MessageBoxButtons.OK,
                       MessageBoxIcon.Information)
        End If
    End Sub

    Private Sub lstNumbers_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lstNumbers.SelectedIndexChanged
        lblPrice.Text = items(lstNumbers.SelectedIndex).decPrice.ToString("C2")
    End Sub
End Class

我认为您需要更改结构的名称。项可以在其他引用中使用

尝试将名称更改为itemstr(例如)


谢谢大家。最后,我又重新开始,尝试了一些不同的东西,终于成功了

选项显式打开 选项严格限制在 选项推断

公开课 '声明结构 结构项 公共strItemNum作为字符串 以十进制表示的公共价格 端部结构

'declare class level array
Public itemList(4) As Item

Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
    Me.Close()
End Sub

Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
    'declare variables
    Dim inFile As IO.StreamReader
    Dim strLineOfText As String
    Dim decPrice As Decimal
    Dim strInfo(4, 1) As String

    'check to see if the file exists
    If IO.File.Exists("ItemInfo.txt") Then
        'open the file
        inFile = IO.File.OpenText("ItemInfo.txt")

        For intRow As Integer = 0 To strInfo.GetUpperBound(0)
            'read the line
            strLineOfText = inFile.ReadLine

            'assign substring from comma to first coloumn
            strInfo(intRow, 0) = strLineOfText.Substring(0, strLineOfText.IndexOf(","))

            Dim intSep As Integer = strLineOfText.IndexOf(",") + 1

            'assign substring after comma to 2nd column
            strInfo(intRow, 1) = strLineOfText.Substring(intSep)

            'assign first column value to strItemNum variable
            itemList(intRow).strItemNum = (strInfo(intRow, 0))

            Decimal.TryParse(strInfo(intRow, 1), decPrice)

            'assign 2nd columnn value to decPrice variable
            itemList(intRow).decPrice = decPrice


            'add item to listbox
            lstNumbers.Items.Add(itemList(intRow).strItemNum)
        Next intRow

        'clost the file
        inFile.Close()

    Else
        'error message if file cannot be found
        MessageBox.Show("Can't find the ItemInfo.txtfile",
                       "Kensington Industries",
                       MessageBoxButtons.OK,
                       MessageBoxIcon.Information)

    End If
End Sub

Private Sub lstNumbers_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles lstNumbers.SelectedIndexChanged
    'display the price 
    lblPrice.Text = itemList(lstNumbers.SelectedIndex).decPrice.ToString("C2")
End Sub

End Class

您忘记了递增
intSub
。另请参见
'declare class level array
Public itemList(4) As Item

Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
    Me.Close()
End Sub

Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
    'declare variables
    Dim inFile As IO.StreamReader
    Dim strLineOfText As String
    Dim decPrice As Decimal
    Dim strInfo(4, 1) As String

    'check to see if the file exists
    If IO.File.Exists("ItemInfo.txt") Then
        'open the file
        inFile = IO.File.OpenText("ItemInfo.txt")

        For intRow As Integer = 0 To strInfo.GetUpperBound(0)
            'read the line
            strLineOfText = inFile.ReadLine

            'assign substring from comma to first coloumn
            strInfo(intRow, 0) = strLineOfText.Substring(0, strLineOfText.IndexOf(","))

            Dim intSep As Integer = strLineOfText.IndexOf(",") + 1

            'assign substring after comma to 2nd column
            strInfo(intRow, 1) = strLineOfText.Substring(intSep)

            'assign first column value to strItemNum variable
            itemList(intRow).strItemNum = (strInfo(intRow, 0))

            Decimal.TryParse(strInfo(intRow, 1), decPrice)

            'assign 2nd columnn value to decPrice variable
            itemList(intRow).decPrice = decPrice


            'add item to listbox
            lstNumbers.Items.Add(itemList(intRow).strItemNum)
        Next intRow

        'clost the file
        inFile.Close()

    Else
        'error message if file cannot be found
        MessageBox.Show("Can't find the ItemInfo.txtfile",
                       "Kensington Industries",
                       MessageBoxButtons.OK,
                       MessageBoxIcon.Information)

    End If
End Sub

Private Sub lstNumbers_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles lstNumbers.SelectedIndexChanged
    'display the price 
    lblPrice.Text = itemList(lstNumbers.SelectedIndex).decPrice.ToString("C2")
End Sub