2009-05-07 20 views
2

Nehmen wir an, ich habe eine DataGridView Control, die etwa 100 Datensätze einer bestimmten Tabelle anzeigt. Jedes Mal, wenn ein Benutzer zum niedrigsten Punkt scrollt, möchte ich dem DataSet, der hinter meinem DataGridView steht, weitere 100 Datensätze hinzufügen.Scroll-Ereignis in C#

ich knwo, dass ein Steuerelement Datagridview ein Scroll-Ereignis wie private void DataGridView_Scroll(object sender, ScrollEventArgs e) hat, und dass die ScrollEventArg s geben Sie mir die ScrollOrientation und die ScrollEventType. Aber wie genau finde ich genau heraus, wenn die Schriftrolle das Ende der Bildlaufleiste erreicht hat?

Tnks.

Antwort

0

Jedes DataGridViewRow hat eine Eigenschaft "Angezeigt", die angibt, ob die Zeile gerade auf dem Bildschirm angezeigt wird. Daher können Sie etwas wie folgt tun:

if(this.dataGridView1.Rows[this.dataGridView1.Rows.Count - 1].Displayed) 
{ 
    //last rows is displayed, do what you gotta do 
} 
+0

Nicht genau, was ich im Sinn habe (weil die letzte Zeile sichtbar sein kann, selbst wenn die Bildlaufschaltfläche nicht das Ende der Bildlaufleiste erreicht hat), aber es löst mein Problem. Wenn jemand in den nächsten 5 Minuten keine bessere Idee hat, werde ich deinen Beitrag als Antwort markieren. Vielen Dank. –

0

Es klingt, als ob Sie sich vielleicht "virtual mode" ansehen möchten. Die Datenbindung funktioniert anders, aber sie ist gut geeignet, um Daten abzurufen.

+0

Ich sehe nicht, wie die Virtual Mode Eigenschaft mir helfen könnte ... Ich muss nur herausfinden, wenn ein Benutzer bis zum allerletzten Datensatz im DataGridView gescrollt hat. –

+0

Da Sie beim Scrollen aufgefordert werden, mehr Daten bereitzustellen ... ist das nicht genau das, was Sie erreichen möchten? –

+0

Ich verstehe jetzt, was du meinst. Wenn das ist, was ich erreichen will, na ja, nicht genau. Kurz bevor ich weitere Daten in der DataGridView hinzufügen möchte, möchte ich eine MessageBox anzeigen und mache wahrscheinlich mehr Sachen, alles genau dann, wenn die Bildlaufschaltfläche das Ende der Bildlaufleiste erreicht hat. Interessante Idee, aber ich erinnere mich an Fälle mit einem besseren Anwendungsdesign. Danke. –

0

Verwenden Sie ein DataReadear, um einige Datensätze zu lesen. Überprüfen Sie dann im Scroll-Ereignis von DataGridView, ob die Eigenschaft FirstDisplayedScrollingRowIndex der Anzahl der geladenen Datensätze nahekommt, verwenden Sie den DataReader erneut, um weitere Zeilen zu laden, und so weiter.