如何在绑定源中离开行时检测到什么?

时间:2012-12-01 22:10:45

标签: c# datagridview bindingsource updating

我有一个datagridview,显示了用户导航访问每个文档的baisc文档数据(名称,类型)。 当导航发生时,richtext框显示每个文档的第一页。 但是,由于每个文档可以有多个页面,因此页面在单独的BindingSource中进行管理,因此用户可以“翻转”它们并进行更改。

如果用户对文档名称或任何页面上的信息进行了更改,则可通过“更新”按钮或通过导航到数据网格视图中的其他文档来选择保存这些页面。

按钮没问题,因为所有绑定源都处于“静态”状态。

但是,我遇到了第二个选项的问题,因为datagridview没有提供“行更改”事件。 “RowLeave”事件是不合适的,因为用户可能在一行中,但是点击进入richtext框以编辑相应的页面,该页面当然会触发“RowLeave”事件。我只想在用户实际更改文档时捕获事件。

我已经尝试过Documents BindingSource“CurrentChanged”和“PositionChanged”事件,但它们都发生在“当前”指针发生变化之后,因此我没有更新的正确上下文。我可以有一个全局“CurrentPosition”变量,用于在我进行更新时重新获得上下文,但这似乎不够优雅。作为一个相当新的人,我猜我错过了什么,所以任何帮助都会很棒。

谢谢, 詹姆斯

1 个答案:

答案 0 :(得分:0)

您尝试使用bindingSource CurrentItemChanged函数

示例:

private void bindingSource1_CurrentItemChanged(object sender, EventArgs e)
{
if (!dataGridView1.IsCurrentCellDirty) return; // or IsCurrentRowDirty
//Your code
}

我希望它会有所帮助:)。