【问题标题】:DataBindingComplete is getting called multiple timesDataBindingComplete 被多次调用
【发布时间】:2010-10-24 03:09:43
【问题描述】:

我正在用 C# 创建一个 Windows 应用程序,

我有 1 个 Datagridview,在我设置它的 DataSource 后它应该有 3 行。

我已将 2 个 Event Habdlers 附加到 Datagrdview

void dgvProductList_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)<br>
{
     //this gets called 4 times
}

private void dgvProductList_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{            
    //gets called 2 times.
}

为什么会发生这种情况,我该如何解决?

提前致谢...

【问题讨论】:

  • 我遇到了同样的问题。而且我绝对肯定我分配了一次 DataSource 属性。尽管我传递的数据很大(超过 10k 行),但所有 4 个事件同时触发。对 DataTable 缓冲区进行一次读取,而不是一次分配操作。仍然触发了 4 个“DataBindingComplete”。
  • 要解决这个问题,请看我的 cmets here

标签: c# winforms data-binding datagridview


【解决方案1】:

我相信这取决于您实际设置数据源的其他方法。在我看来,您要么设置 DataSource 两次,要么调用 DataBind 两次,并且在每个 DataBind 上,您实际上将两行放入 DataGridView,因此总共有 4 行。

一些额外的代码可能会有所帮助...

需要尝试的一些事情:在您的代码中搜索 DataBind()、DataSource() 等,并确保仅在适当的位置调用它。

此外,DataBind 被调用两次并不一定是坏事,假设数据绑定之间发生了一些变化……状态发生了一些变化……没有背景真的很难说。

【讨论】:

    【解决方案2】:

    From msdn online DataBindingComplete Event

    当数据源的内容改变或DataSourceDataMember的值发生变化时引发此事件BindingContext 属性更改。

    例如如果您要分配数据源,然后添加 3 行 --> 4 次事件触发

    【讨论】:

    • 数据绑定完成后是否还有另一个事件被调用?
    猜你喜欢
    • 2020-06-08
    • 2011-10-18
    • 2020-10-19
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多