当我从一个虚拟模式数据网格中检索一个行列表时,我总是得到一个异常(见下文),只有当我的行数超过了我可以在屏幕上显示的行数时才会发生这种情况,而且这种情况并不是每次都会发生。关于虚拟模式,我还遗漏了什么吗?
Update>下图显示了问题,索引现在超出了列表范围。这样做的原因是,假设我有10个项目,我隐藏了5个项目,因为它们不需要,我想在这5个项目上运行一些代码,现在有5个项目,但其中一些项目的索引可能在5-9之间,我如何重新索引?当我在visible 5上运行一些代码时,我会显示隐藏的5,所以我不想丢弃它们,当它们都可见时,我需要再次重新索引。非常感谢。

发布于 2009-07-27 13:56:50
我只在DataGridView中使用了虚拟模式,但在虚拟模式下,您应该自己存储数据,并在数据网格需要渲染时提供它。我认为datagrid只创建填充视图所需的最少数量的项,然后出于性能原因重用它们。
发布于 2009-07-27 14:03:48
对我来说,这看起来有点像是线程问题。您是否在使用BackgroundWorker或类似的方法来填充_items变量?看起来当你在_items上循环的时候,它的数量正在发生变化。
也许你可以尝试用下面的代码包围任何和所有处理_items的代码:
lock (_items)
{
// your code
}或者,如果您的填充/修改代码仍在运行,则中断这些函数并返回null (也许可以使用某种布尔型标记变量)。
发布于 2009-07-27 14:23:20
您是如何设置数据绑定的。
你有没有可能在底层数据集上工作,而不是通过数据网格。
https://stackoverflow.com/questions/1188244
复制相似问题