我無法使其工作。我正在嘗試使用txt文件中的值填充第2列,並跳過列1中沒有值的單元格,但沒有跳過文本文件中的數據。將值添加到DGV列時跳過某些單元格
這就是我得到:
和代碼,我使用:
Dim fileName = "X:\2013\NKT13\FI-ZL\BU.rev"
Dim lineCount = System.IO.File.ReadAllLines(fileName).Length
Dim lines() = System.IO.File.ReadAllLines(fileName)
For i As Integer = 0 To lineCount
Dim RM001 As String = lines(i).Replace(".", "")
Dim LBS001() As String = RM001.Split(New String() {";"}, StringSplitOptions.None)
On Error Resume Next
Dim Val = LBS001(1)
Dim Val2 = LBS001(2)
If DataGridView1.Rows(i).Cells(1).Value Is Nothing Then
'MsgBox(DataGridView1.Rows(i).Index)
DataGridView1.Rows(i).DefaultCellStyle.BackColor = Color.WhiteSmoke
Else
For Each row As DataGridViewRow In DataGridView1.Rows
DataGridView1.Rows(i).Cells(2).Value = LBS001(0)
Next
End If
Next
在上面的一行代碼If DataGridView1.Rows(i).Cells(1).Value Is Nothing
不工作。當該行被替換爲一個If DataGridView1.Rows(i).Cells(1).Value = ""
,我得到這個:
這裏A201A缺失以及在列1每空行1周的結果將被跳過。 如何使用txt文件中的數據填充第2列,以便僅跳過行而不是結果。
編輯: 我試過別的東西,它在第2列工程的第一個空單元格,但是當涉及到第二個......從陣列跳過一個數據,然後繼續正常進行,直到達到另一個空細胞。例如:A201A ... A224A(一切正常)...空白單元格(跳過)... A205正常,但在206單元格中放入A207A。
現在,下面的代碼也可以工作,這要感謝Steve。
Dim Dat2() As String = Split(start1(0), Environment.NewLine)
Dim Dat2A() As String = Split(Dat2(0), ";")
Dim Dat2B() As String = Split(Dat2(1), ";")
Dim fileName = "X:\2013\NKT13\FI-ZL\BU.rev"
Dim lineCount = System.IO.File.ReadAllLines(fileName).Length
Dim lines() = System.IO.File.ReadAllLines(fileName)
Dim a As Integer = 0
For x As Integer = 0 To DataGridView1.Rows.Count - 2
If DataGridView1.Rows(x).Cells(1).Value <> "" Then
DataGridView1.Rows(x).Cells(2).Value = Dat2(a)
a += 1
Else
DataGridView1.Rows(x).Cells(2).Value = ""
End If
End If
Next
編輯2: 感謝史蒂夫......我已經改變了代碼一點,它的工作原理。唯一的問題是我缺少lineCount
中的兩行,我認爲是因爲每個跳過的DGV行。
Dim fileName = "X:\2013\NKT13\FI-ZL\BU.rev"
Dim lineCount = System.IO.File.ReadAllLines(fileName).Length
Dim lines() = System.IO.File.ReadAllLines(fileName)
MsgBox(lineCount)
Dim i2 As Integer = 0
For i As Integer = 0 To lineCount
Dim RM001 As String = lines(i2).Replace(".", "")
Dim LBS001() As String = RM001.Split(New String() {";"}, StringSplitOptions.None)
On Error Resume Next
Dim Val = LBS001(1)
Dim Val2 = LBS001(2)
If DataGridView1.Rows(i).Cells(1).Value <> "" Then
For Each row As DataGridViewRow In DataGridView1.Rows
DataGridView1.Rows(i).Cells(2).Value = LBS001(0)
Next
i2 += 1
Else
DataGridView1.Rows(i).DefaultCellStyle.BackColor = Color.WhiteSmoke
End If
Next
我仍然得到的結果一樣,第一形象。順便說一句,我意識到我需要另一個數據變量。我在你的答案前幾秒鐘編輯了我原來的帖子......也許你可以進一步幫助我?謝謝。 – Jovica 2014-08-29 15:45:49
爲什麼在單元格爲空時重置'a = x'。你基本上告訴它做同樣的事情。仔細看一下我提供的代碼,你會發現我們正在做的事情有很大的不同。 – Steve 2014-08-29 15:57:36
首先,我避免使用DGV進行循環,因爲我對編程很陌生,所以我必須查看代碼一段時間,直到看到錯誤。無論如何,我已經試過你的代碼,並獲得列2中的所有值,但沒有跳過行,此行不起作用「DataGridView1.Rows(i2).Cells(1).Value Is Nothing」。此外,我已啓用msgbox只是爲了測試它,並沒有它完全忽略空單元格。 – Jovica 2014-08-29 16:08:11