如何在不改变行的情况下查看DataGridView的更改

3
我有一个包含几个DataGridViewComboBoxColumn的DataGridView。这些列已将它们的DataSource设置为显示可供选择的特定值,然而DataGridView本身并没有设置其DataSource。我手动从中加载/保存值。
问题:当我更改其中一个组合框的值时,直到我移动到另一行才会看到更改。
背景信息:该应用程序的主要目的是将数据从一张表移动到另一张表。在一列中,您选择一个表的源字段,在下一列中,您选择另一张表中的目标字段。该应用程序的一个功能是,当您点击行标题单元格时,它将显示来自您在该行中选择的源字段的不同值的列表。但是,在更新源字段时,我不能通过单击行标题单元格获得正确的结果,直到我先离开该行。
问题:最简单的方法是什么,可以使我的更改立即生效,而不必先离开该行?我曾经实现过一种方法以实现复选框列,但我想出的解决方案对于组合框列无效。我想要能够适用于所有情况的解决方案。
谢谢!补充说明:如果你正在阅读这篇文章,并且想到自己“这是个糟糕的问题”,请告诉我为什么?如果您认为我要求做某些您认为不明智、不良实践的事情,我并不介意,只是想了解问题是否与这是一个“糟糕的SO问题”有关。

额...那个给这个问题点踩的人介意解释一下为什么吗?换句话说,能不能真正有所帮助? - Brandon Moore
1
不知道。看起来还好,不过更好的问题往往具有简明的代码和更少的英语。已点赞。 - Ritch Melton
@RitchMelton 哈哈,它不再是负数了 :) - Brandon Moore
1
@Brandon 很想取消我的点赞,但伟大的力量需要伴随着伟大的责任。 - Ritch Melton
@RitchMelton 你是一个真正有品格的人 :) - Brandon Moore
显示剩余3条评论
3个回答

4
我推测您希望在选择后立即提交值,那么也许下面的方法可以帮助您实现。订阅 CurrentCellDirtyStateChanged 事件并查看它是否达到了您想要的效果。
void dataGridView1_CurrentCellDirtyStateChanged(object sender,
    EventArgs e)
{
    if (dataGridView1.IsCurrentCellDirty)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}

太好了!谢谢,我知道这一定是一些简单的东西。 - Brandon Moore

1

尝试使用以下函数:

dataGridView.RefreshEdit();

0
你在寻找CellValidated事件吗?你可以在此事件中手动保存数据。

可能的话,我会试一下,很快让您知道结果。 - Brandon Moore
不行。该事件在离开行时触发。我希望在更改值时立即更新。 - Brandon Moore

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