如何将文本文件读取到 Datagridview

How To Read Text File to Datagridview

我有一个项目,我想将文本文件加载到 DataGridview
数据:

"#Tools Must You Have  
Tool_1 Screwdriver T1    
Tool_2 Screw T2   
Tool_3 Ruler T3" 

我有两个按钮(btSave & btOpen)和一个 DataGridview 有两列(Tools & Name
我想将数据读取到 DataGridview,但我想跳过以“#”开头的行

我用这段代码试过了

Private Sub LoadGridData(ByRef ThisGrid As DataGridView, ByVal Filename As String)
    ThisGrid.Rows.Clear()
    Dim TextLine As String = ""
    Dim SplitLine() As String
    Using objReader As New System.IO.StreamReader(Filename)
        Do While objReader.Peek() <> -1
            TextLine = objReader.ReadLine()
            SplitLine = Split(TextLine, " ")
            Me.DataGridView1.Rows.Add(SplitLine)
        Loop
    End Using
End Sub

此代码错误,加载时,列中的文本不相同,只读了一个单词“Screwdriver”而不是“screwdriver T1”,
有什么解决办法吗?

当您 运行 该拆分函数时,您将在每个 space 上拆分整个字符串,因此您最终得到 3 长数组,而 T1 位于第三个字符串中。我假设您的 table 仅由两列定义。试试这个:

    Do While objReader.Peek() <> -1
        TextLine = objReader.ReadLine()
        If Textline.Trim.Length > 0 AndAlso not TextLine.StartsWith("#") Then
            DataGridView1.Rows.Add(TextLine.Split(" ")(0), textLine.Replace(TextLine.Split(" ")(0), "").Substring(1))
        End If
    Loop

实际上,我正在对您的作业和数据做出各种假设,但这应该会让您朝着正确的方向前进。

Private Sub LoadGridData(ByVal ThisGrid As DataGridView, ByVal Filename As String)
    ThisGrid.Rows.Clear()
    ThisGrid.Rows.AddRange( 
        File.ReadLines(FileName).
              Where(Function(line) Not line.TrimStart().StartsWith("#")).
              Select(Function(line) line.Split(" ".ToCharArray(), 2)).
              ToArray() 
     ) 
End Sub

注意(除其他外)从 ByRefByVal 的变化。很容易错过那个,ByRef vs ByVal 可能并不意味着你认为的那样。请记住 VB.Net 中的 ByVal 仍然传递引用 。不同之处在于,它对参考值进行了 copy,但由于该副本仍引用同一个 DataGridView 对象,因此它将执行您希望它执行的操作。唯一应该使用 ByRef 的情况是需要直接对变量进行赋值,并且希望该赋值显示在调用代码中。这与分配给对象的 属性 不同。如果你想实际替换整个对象,你只需要这个,而且几乎永远不会。