2012-04-06 59 views
3

我在我的應用中使用了System.ComponentModel.BindingList作爲DataGridView.DataSource。該列表非常大,需要幾秒鐘才能在DataGridView上畫。所以,我需要知道何時數據綁定(包含繪畫)過程完成一些東西。我嘗試了DataBindingComplete事件,但是它在將值設置爲DataSource屬性後立即發生。瞭解DataBinding何時完成

在此先感謝。


UPDATE:

1.生成綁定列表►〜1秒

2. [從數據庫獲取數據]將其設置爲DataSource[綁定]►〜1秒(該DataBindingComplete升高現在。)

3.DataGridView]►〜5秒

+0

以及'DataBindingComplete'似乎是正確的,但你需要在你遇到什麼問題,擴大和爲什麼它沒有工作特別 – V4Vendetta 2012-04-06 04:31:59

+0

親愛的@ V4Vendetta:正如我上面提到的,'DataBindingComplete'做工不錯。但是當它被提出時,'DataGridView'仍然需要繪製。繪畫程序是一個耗時的過程,我想知道它何時完成。請讓我知道,如果它不夠清楚。 – Mimi 2012-04-06 04:39:48

+0

當數據源的內容發生變化或DataSource,DataMember或BindingContext屬性的值發生變化時,會引發此事件。必須改進此事件。至少此事件會在一次運行中激發4次圈。 – Elshan 2014-10-20 04:41:37

回答

5

這是繪畫[顯示數據像描述的那樣簡單!

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.. 
    } 
}