![](/img/trans.png)
[英]How to read text file data and display in dataGridView with vb.net
[英]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
”,
有什么解決辦法嗎?
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
注意(除其他事項外)從ByRef
到ByVal
的更改。 很容易錯過這一點, ByRef
vs ByVal
可能並不代表您認為的那樣。 請記住,VB.Net中的ByVal
仍會傳遞引用 。 不同之處在於,它會復制參考值,但是由於該副本仍引用相同的DataGridView對象,因此它將執行您想要的操作。 唯一應該使用ByRef
是,如果需要直接對變量進行賦值,並且希望該賦值出現在調用代碼中。 這與分配給對象的屬性不同。 僅當您要實際替換整個對象時才需要此操作,而這幾乎絕不會發生。
運行該拆分函數時,您將在每個空格上拆分整個字符串,因此最終得到3個長數組,而T1在第三個字符串中。 我假設您的表僅由兩列定義。 嘗試這個:
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
實際上,我正在就您的分配和數據做出各種假設,但這應該可以使您朝正確的方向前進。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.