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

本文关键字:情况下 DataGridView 更改 | 更新日期: 2023-09-27 18:14:21

我有一个DataGridView与几个DataGridViewComboBoxColumn的。列设置了它们的数据源,以便它们将显示可供选择的某些值,但是DataGridView本身没有将其数据源设置为任何值。我手动从它加载/保存值。

问题:当我更改其中一个组合框值时,我没有看到更改,直到我移动到另一行。

更多背景信息:应用程序的主要目的是将数据从一个表移动到另一个表。在一列中选择表的源字段,在下一列中选择另一个表中的目标字段。该应用程序的一个功能是,当你点击行标题单元格时,它将显示一个不同值的列表,这些值来自你在该行中选择的源字段。但是,在更新源字段时,我无法通过单击行标题单元格获得正确的结果,直到我先离开行。

问题:什么是最简单的方法来让我的更改立即生效,而不是必须先离开行?我实现了一些东西来完成这个复选框列一次,但我提出的解决方案并不适用于组合框列。我想要一个万能的东西。

谢谢!

编辑:如果你碰巧读到这篇文章并对自己说"这是一个糟糕的问题",你介意告诉我为什么吗?我真的不介意你投反对票……我只是想了解这个问题是否与这个"不好的问题"有关,或者你认为我要求做一些你认为不聪明的事情,是一个不好的做法。

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

我推断您希望值在被选中后立即提交,因此这可能有助于实现这一目标。订阅CurrentCellDirtyStateChanged,看看它是否做你想做的事情。

void dataGridView1_CurrentCellDirtyStateChanged(object sender,
    EventArgs e)
{
    if (dataGridView1.IsCurrentCellDirty)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}

尝试使用以下函数:

dataGridView.RefreshEdit();

您正在搜索CellValidated事件吗?您可以手动保存此事件中的数据。