0

我是一名新程序员,我正在尝试创建一个小程序来帮助我完成很多事情。

它看起来怎么样?

这是文本文件数据的格式:

**;======================= Start**

 (item  (name 256)      (Index 1)   (Image "Wea001")    (Action 1 1) (class
 weapon sword)  (code 1 1 1 1)  (country 2) (level 1)   (wear
 1)                                 (limit Knight 1)    (range 16)  (buy 4) (sell 1)    (endurance
 4)             (specialty  (aspeed 700)                        (Attack 3 10)                   (hit 15)                                                                                                    )                               )

**;======================== end**

我需要导入(名称旁边的数字)、(索引旁边的数字)和(图像旁边的名称)。

用户将从打开的文件对话框加载文本文件,3 列将显示我正在寻求帮助的 3 个字段。

任何人都可以向我展示将文本文件数据加载到datagridview中的代码示例吗?我正在使用vb.net

4

1 回答 1

1

这是一种使用现有格式的方法。这使用数据表来包含数据,然后将其用作 datagridview 的数据源它搜索正确的行,然后通过右括号拆分行),然后通过将每个部分拆分为空格来提取数据。

Imports System.IO
Public Class Form1
    Dim dt As New DataTable
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim sr As New StreamReader("InitItem.txt")
        Dim DataString As String = ""
        Dim ImageIndex As Integer = 2
        dt.Columns.AddRange({New DataColumn("Name"), New DataColumn("Index"), New DataColumn("Image")})
        While Not sr.EndOfStream
            DataString = sr.ReadLine
            If DataString.Contains("(item") Then
                Dim ParseData() As String = DataString.Split(")"c)
                If (ParseData(ImageIndex).Contains("desc")) Then
                    ImageIndex = 3
                End If
                AddNewRow(ParseData, ImageIndex)
            End If
        End While
        DataGridView1.DataSource = dt
    End Sub
    Private Sub AddNewRow(ParseData() As String, ImageIndex As Integer)
        Dim TempRow As DataRow = dt.NewRow
        TempRow.ItemArray = {ParseData(0).Trim.Split({" "c}, StringSplitOptions.RemoveEmptyEntries)(1), _
                             ParseData(1).Trim.Split({" "c}, StringSplitOptions.RemoveEmptyEntries)(1), _
                             ParseData(ImageIndex).Trim.Split({" "c}, StringSplitOptions.RemoveEmptyEntries)(1).Trim(""""c)}
        dt.Rows.Add(TempRow)
    End Sub
End Class

按空格分割)可确保当我们要在按空格分割后提取数据时,字符串没有)附加到末尾。

因为文本文件格式无处不在,所以我专门为您请求的数据制作了这段代码。如果您想要更通用的东西,那么如前所述,您应该考虑使用更标准的文件格式。由于似乎没有很多数据,我建议每行都有一个字段/值对。

于 2013-06-18T06:39:43.943 回答