Vb.net 在DataGridView中以单独的行显示.txt文件中的数据

Vb.net 在DataGridView中以单独的行显示.txt文件中的数据,vb.net,datagridview,notepad,Vb.net,Datagridview,Notepad,我对VB.net完全陌生,并且已经被分配了一个家庭作业。我需要能够读取某些行并在DataGridView中显示它们。我已经能够将我的.txt文件链接到DGV,但是它读取整个文件,而不是特定的行。我有4个按钮:btn1,btn2,btn3,btn4 我在表单中添加了一个新按钮,用于从文本文件加载数据,将其解析为datatable,并将DataGridView1.DataSource设置为该datatable。然后,第二个方法创建一个新的datatable,并从主datatable导入指定的行,并在

我对VB.net完全陌生,并且已经被分配了一个家庭作业。我需要能够读取某些行并在DataGridView中显示它们。我已经能够将我的.txt文件链接到DGV,但是它读取整个文件,而不是特定的行。我有4个按钮:btn1,btn2,btn3,btn4

我在表单中添加了一个新按钮,用于从文本文件加载数据,将其解析为datatable,并将DataGridView1.DataSource设置为该datatable。然后,第二个方法创建一个新的datatable,并从主datatable导入指定的行,并在DGV中显示它

我需要能够按下btn1并在DGV中显示数据,如果之后按下btn2,数据将显示在其下的行中,等等

任何帮助都将不胜感激

Private txtDataTable As DataTable
Private Sub loadFileBtn_Click(sender As Object, e As EventArgs) Handles        
loadFileBtn.Click
txtDataTable = New DataTable("txtContents")

Dim txtContents As String()
Try
    txtContents = IO.File.ReadAllLines("database.txt")
Catch ex As Exception
    MsgBox(ex.Message)
    Return
End Try

Dim txtLines As New List(Of String())
txtContents.ToList().ForEach(Sub(x) txtLines.Add(x.Split(CChar(vbTab))))

If txtLines.Count > 0 Then
    txtLines.Item(0).ToList.ForEach(Sub(x) txtDataTable.Columns.Add(New DataColumn(x.ToString)))
    txtLines.RemoveAt(0)
End If

If txtLines.Count > 0 Then
    txtLines.ToList.ForEach(Sub(x) txtDataTable.Rows.Add(x.ToArray))
End If
DataGridView1.DataSource = txtDataTable
End Sub


Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn1.Click,         
btn2.Click, btn3.Click, btn4.Click
If txtDataTable Is Nothing Then Return

Dim rowIndex As Integer
If Integer.TryParse(DirectCast(sender, Button).Name.Replace("btn", String.Empty), rowIndex) Then
    rowIndex -= 1
Else
    Return
End If

Dim TempTable As DataTable = txtDataTable.Clone
If rowIndex < txtDataTable.Rows.Count Then
    TempTable.ImportRow(txtDataTable.Rows(rowIndex))
End If

DataGridView1.DataSource = TempTable
Private txtDataTable作为DataTable
私有子加载filebtn\u单击(发送者作为对象,e作为事件参数)句柄
loadFileBtn。单击
txtDataTable=新数据表(“TXTDocontents”)
将TXT内容设置为字符串()
尝试
txtContents=IO.File.ReadAllLines(“database.txt”)
特例
MsgBox(例如消息)
返回
结束尝试
将txtLines标注为新列表(字符串()的)
txtContents.ToList().ForEach(子(x)txtLines.Add(x.Split(CChar(vbTab)))
如果txtLines.Count>0,则
txtLines.Item(0).ToList.ForEach(子(x)txtDataTable.Columns.Add(新数据列(x.ToString)))
txtLines.RemoveAt(0)
如果结束
如果txtLines.Count>0,则
txtLines.ToList.ForEach(子(x)txtDataTable.Rows.Add(x.ToArray))
如果结束
DataGridView1.DataSource=txtDataTable
端接头
私有子btn_Click(发送者作为对象,e作为事件参数)处理btn1。单击,
btn2.点击,btn3.点击,btn4.点击
如果txtDataTable为Nothing,则返回
将行索引设置为整数
如果是Integer.TryParse(DirectCast(sender,Button).Name.Replace(“btn”,String.Empty),rowIndex),那么
行索引-=1
其他的
返回
如果结束
作为DataTable=txtDataTable.Clone的可复制文件
如果rowIndex
端接头


根据您的代码,我假设这是一个以制表符分隔的文本文件。如果您像这样读取文件会怎么样:

    Using fileReader As New FileIO.TextFieldParser(PathToFileAsString)
        fileReader.TextFieldType = FileIO.FieldType.Delimited
        fileReader.SetDelimiters(vbTab)
        While Not fileReader.EndOfData
            Dim currentRow as String() = fileReader.ReadFields
            For Each currentField As String In currentRow
                'Have your way with it.
            Next
        End While
    End Using