如何在虚拟模式下编程编辑DataGridView单元格的值?

3
我有一个虚拟模式下的DataGridView。 我只实现了CellValueNeeded事件处理程序,如http://msdn.microsoft.com/en-us/library/15a31akc.aspx所述。 当你想手动编辑单元格时,似乎只有实现其他事件才需要。
我想通过编程方式编辑一个DataGridView单元格值。 我尝试使用以下代码:
DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
DataGridView1.BeginEdit(false);
DataGridView1.Rows[0].Cells[0].Value = "testing new value";
//just using a random parameter here, not sure it is needed when editing programmatically
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.LeaveControl);
DataGridView1.Refresh();

但是没有成功 :(
任何帮助都将不胜感激。
1个回答

7
当您使用虚拟模式时,您提供了自己的逻辑来连接DataGridView和底层数据源。因此,要编辑单元格值,应更改底层数据源中的值,并调用Refresh以刷新显示的值(这将导致为所有显示单元格调用CellValueNeeded事件)。

谢谢。你是否知道有没有办法知道当前在虚拟模式下显示哪些行。这将使我有机会确定是否需要刷新。 - Sjors Miltenburg
1
您可以使用FirstDisplayedScrollingColumnIndex和FirstDisplayedScrollingRowIndex属性,以及DisplayedColumnCount和DisplayedRowCount方法。 - Thomas Levesque
太棒了!这个控件有很多属性,有时候很难找到你要找的东西。非常感谢! - Sjors Miltenburg
我遇到了同样的问题,我有一个绑定了SQL数据表的数据网格视图,但当用户尝试编辑和添加新行到数据网格视图时,它可以正常工作并接受编辑而没有问题。但当我想要通过编程方式编辑单元格值时出现了问题,那该怎么做呢?另外,我已经调试了代码并观察到单元格的值已经改变,但它没有显示在网格视图上? - Sara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接