【问题标题】:Knowing when DataBinding is completed了解 DataBinding 何时完成
【发布时间】:2012-04-19 19:30:13
【问题描述】:

我在我的应用程序中使用了System.ComponentModel.BindingList 作为DataGridView.DataSource。该列表非常大,需要几秒钟才能在DataGridView 上绘制。所以,我需要知道数据绑定(包含绘画)程序何时完成以做一些事情。我尝试了DataBindingComplete 事件,但它在为DataSource 属性设置值后立即发生。

提前致谢。


更新:

1. 生成绑定列表[ 从数据库中获取数据] ► ~1 sec

2. 将其设置为 DataSource [ Binding ] ► ~1 sec DataBindingComplete 向右提升现在。)

3. 绘画[DataGridView中显示数据] ► ~5 sec

【问题讨论】:

  • 好吧DataBindingComplete 似乎是对的,但您需要详细说明您面临的问题以及为什么它没有特别有效
  • 亲爱的@V4Vendetta:正如我上面提到的,DataBindingComplete 效果很好。但是当它升起时,DataGridView 仍然需要绘制。绘画过程是一个耗时的过程,我想知道它什么时候完成。如果不够清楚,请告诉我。
  • 当数据源的内容发生变化或DataSourceDataMemberBindingContext属性的值发生变化时会引发此事件。必须改进此事件。至少这个事件触发了 4 次以运行一个圆圈。

标签: c# winforms binding datagridview


【解决方案1】:

就像描述的那样简单!

bool bindingCompleted = false;

void Form1_Load(object sender, EventArgs e)
{
    dataGridView1.DataSource = bindingList1;
}

void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    bindingCompleted = true;
}

void dataGridView1_Paint(object sender, PaintEventArgs e)
{
    if (bindingCompleted)
    {
       bindingCompleted = false;

       // do some stuff.. 
    }
}

【讨论】:

    猜你喜欢
    • 2012-04-01
    • 2019-12-10
    • 2013-03-09
    • 2021-11-23
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    相关资源
    最近更新 更多