2012-04-06 10 views
3

Ich habe die System.ComponentModel.BindingList als DataGridView.DataSource in meiner App verwendet. Die Liste ist ziemlich groß und dauert einige Sekunden, um auf dem DataGridView gemalt zu werden. Also, ich muss wissen, wann Datenbindung (enthalten Malerei) endet, um etwas zu tun. Ich habe versucht DataBindingComplete Ereignis, aber es tritt direkt nach dem Festlegen eines Werts auf die DataSource Eigenschaft.Wissen, wann DataBinding abgeschlossen ist

Vielen Dank im Voraus.


UPDATE:

1. Generierung Bindung Liste [ Abrufen von Daten aus der Datenbank ] ► ~ 1 sec

2. es einstellen DataSource[ Bindung ] ► ~ 1 sec (Die DataBindingComplete wird jetzt erhöht.)

3. Malerei [ Anzeigen von Daten in den DataGridView] ► ~ 5 sec

+0

gut 'DataBindingComplete' scheint richtig, aber Sie müssen auf erweitern, was Problem Sie konfrontiert und warum es besonders – V4Vendetta

+0

Lieber @ V4Vendetta hat nicht funktioniert: Wie ich bereits erwähnt, ist die' DataBindingComplete' gut funktioniert. Aber wenn es ausgelöst wird, muss das 'DataGridView' noch malen. Der Malvorgang ist ein zeitaufwendiger Prozess und ich würde gerne wissen, wann er fertig ist. Bitte lassen Sie mich wissen, wenn es nicht klar genug ist. – Mimi

+0

Dieses Ereignis wird ausgelöst, wenn sich der Inhalt der Datenquelle ändert oder wenn sich der Wert der Eigenschaft 'DataSource',' DataMember' oder 'BindingContext' ändert.Dieses Ereignis muss verbessert werden.Zumindest wurde dieses Ereignis 4 Mal auf 1 ausgeführt Kreis. – Elshan

Antwort

5

Das war So einfach wie beschrieben!

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