繁体   English   中英

如何用逗号从文本文件中拆分数组,只在Listbox中显示一个数组索引?

[英]How to split an array from a text file by a comma, only getting one array index displayed in Listbox?

首先,我要感谢愿意提前提供帮助的任何人。 我的问题是,当我尝试用数组中的项目填充列表框时,我只会将“常规”添加为列表框项,而不是数组中的实际字符串。 我是编程的新手,所以我很抱歉这是否是我的代码中的明显错误,尽管我认为可能是这样。

这是我的代码:

Private Sub frmSalesSummary_Load(sender As Object, e As EventArgs) Handles 
MyBase.Load
    Dim info() As String = IO.File.ReadAllLines("info.txt")
    Dim splitChar As Char = ","
    Dim infoString As String
    For i = 0 To info.GetUpperBound(0)
        infoString = info(i).Split(splitChar)
        lstSummary.Items.Add(infoString(i))
    Next
End Sub

文本文件在第一行包含用于测试“ alex,General,7,$ 105.00”的文件。

这个问题可能需要经常修改,因为我也在积极地尝试解决这个问题。 道歉。

'info'是您的行(以逗号分隔)'infoString'是由Split分隔的单词的数组

因此,如果要从该拆分中添加单个项目,则可以使用infoString(0)作为名称,使用infoString(1)作为Rank,等等。

因此,您将每一行进行拆分,然后将其添加到列表框中,只需添加infoString(0),因为数组的元素保留了将其从行中拆分出的名称。

尝试

lstSummary.Items.Add(infoString(0))

如果您想要像这样的列表:

alex
General
7
$105.00

您可以在当前循环中创建另一个循环,并将迭代器用于索引。

For i = 0 to info.GetUpperbound(0)
   infoString = info(i).Split(splitChar)
   For x = 0 to infoString.GetUpperBound(0)
      lstSummary.Items.Add(infoString(x))
   Next
Next

这将占用每行,将其拆分,然后将每行的信息添加到列表框中...请记住,您将显示4条信息,然后下一行将显示接下来的4条信息,直到用完为止文本文件中的行数。

仍然不确定是否正是您要尝试的方法,如果还不是这样,您可能会模拟一些有关期望的图片以及有关是否还有更多此类信息的信息。文本文件中的信息。

一个小技巧。 您永远不要使用控件来存储正在使用的数据。 将其存储为PersonDetails对象或任何您想调用它们的列表。

您可以像这样声明PersonDetails对象。

Private Class PersonDetails
    Public Property Name As String
    Public Property Category As String
    Public Property Type As Integer
    Public Property Amount As Decimal
End Class

和他们这样的名单

Dim PersonSummaryList As New List(Of PersonDetails)

表单加载事件将读取文本文件,并为每一行创建一个新的PersonDetails对象,并将其添加到PersonDetails列表中,然后将名称添加到ListBox中

Private Sub frmSalesSummary_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim info() As String = IO.File.ReadAllLines("info.txt")
    Dim splitChar As Char = ","c
    Dim infoString() As String
    For i As Integer = 0 To info.GetUpperBound(0)
        infoString = info(i).Split(splitChar)
        'remove the commas and $ signs
        infoString(3) = infoString(3).Replace("$"c, "")
        Dim newPerson As New PersonDetails
        newPerson.Name = infoString(0)
        newPerson.Category = infoString(1)
        newPerson.Type = Integer.Parse(infoString(2))
        Decimal.TryParse(infoString(3), newPerson.Amount)
        PersonSummaryList.Add(newPerson)
    Next

End Sub

在ListBox中,您将看到的只是一个名称列表,当您单击一个项目时,下面的代码将找到与您选择的名称匹配的对象,并在MessageBox中显示所需的任何属性,但是您当然可以使用tempPerson对象执行任何tempPerson

Private Sub LstSummary_SelectedIndexChanged(sender As Object, e As EventArgs) Handles LstSummary.SelectedIndexChanged
    Dim tempPerson As PersonDetails = PersonSummaryList.Find(Function(x) x.Name = LstSummary.SelectedItem.ToString)
    MessageBox.Show("Name :" & tempPerson.Name & vbCrLf & "Amount :" & tempPerson.Amount)
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM