2014-10-09 104 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