簡體   English   中英

如何將文本文件讀取到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" 

我有兩個按鈕( btSavebtOpen ), DataGridview有兩列( ToolsName
我想將數據讀取到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

注意(除其他事項外)從ByRefByVal的更改。 很容易錯過這一點, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM