Vb.net 在DataGridView中以单独的行显示.txt文件中的数据
我对VB.net完全陌生,并且已经被分配了一个家庭作业。我需要能够读取某些行并在DataGridView中显示它们。我已经能够将我的.txt文件链接到DGV,但是它读取整个文件,而不是特定的行。我有4个按钮:btn1,btn2,btn3,btn4 我在表单中添加了一个新按钮,用于从文本文件加载数据,将其解析为datatable,并将DataGridView1.DataSource设置为该datatable。然后,第二个方法创建一个新的datatable,并从主datatable导入指定的行,并在DGV中显示它 我需要能够按下btn1并在DGV中显示数据,如果之后按下btn2,数据将显示在其下的行中,等等 任何帮助都将不胜感激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导入指定的行,并在
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