我是一名新程序员,我正在尝试创建一个小程序来帮助我完成很多事情。
它看起来如何?
这是文本文件数据的格式:
**;======================= 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
答案 0 :(得分: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
)
分割可确保当我们在按空格分割后提取数据时,该字符串没有)
添加到最后。
因为文本文件格式遍布各处,所以我专门针对您请求的数据制作了此代码。如果你想要更通用的东西,如前所述,你应该考虑一个更标准的文件格式。由于似乎没有大量数据,我建议在每一行上使用一个字段/值对。