2014-10-09 18 views
1

目前我有一個函數可以搜索DataGridView中的每一行,看起來像這樣。在特定行開始'For Each As DataGridViewRow'

For Each row As DataGridViewRow In DataGridView1.Rows 
Next 

但是由於其他原因導致的問題,我需要讓它在特定的行上啓動For Each Row。 我試過「對於DataGridView1.Rows.IndexOf(RowToStartAt)DataGridViewRow中的每一行」但是這似乎是錯誤的方法來使用。

是我想要做的事實上可能與否?或者我只是試圖使用錯誤的方法?

回答

2

你可以用這種語法

For Each row in dgv.Rows.Cast(Of DataGridViewRow)().Skip(5) 
    Console.WriteLine(row.Cells(0).Value.ToString()) 
Next 

的在這個例子中循環跳過第5行,然後開始其枚舉

不知道這是真的有利與否。傳統的for ...循環可能會更清晰,但是Linq會實現所需的結果。

+0

這實際上工作完美。我最初的問題是因爲某個與我的計時器有關的事件導致它在每次延遲設置爲1000時停止在第35行。如果我將延遲更改爲100,它會停在4,如果設置爲10000,它會停在第350排。我希望這個答案可以幫助任何有類似問題的人! – Crystalwolf 2014-10-09 14:59:48

+0

@Crystalwolf我知道這個帖子已經超過2年了 - 但我想,也許你後來發現 - 你的計時器事件觸發了一個跨線程操作。計時器在單獨的線程上運行,並且當事件結束時,表單線程上沒有運行該方法。這可能是導致它停在特定行的原因 - 交叉線程異常。您需要在您的計時器已用方法中使用調用 - 我猜想您正試圖從該事件更新UI。 – Ken 2016-10-17 04:16:15