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 に答える