Warum nicht einen Dateistream öffnen und nur die ersten Zeilen lesen. Sie können seek
verwenden, während der Benutzer in der Datei scrollt und die entsprechenden Zeilen anzeigt. Der Punkt ist - das Lesen der gesamten Datei in den Speicher dauert zu lange, so nicht tun, dass!
Starter-Code
Es folgt ein kurzer Code-Schnipsel, die nicht abgeschlossen ist, aber es sollte zumindest loszulegen:
// estimate the average line length in bytes somehow:
int averageLineLengthBytes = 100;
// also need to store the current scroll location in "lines"
int currentScroll = 0;
using (var binaryReader = new StreamReader(new FileStream(fileName, FileAccess.Read)))
{
if (binaryReader.BaseStream.CanSeek)
{
// seek the location to read:
binaryReader.BaseStream.Seek(averageLineLengthBytes * currentScroll, SeekOrigin.Begin);
// read the next few lines using this command
binaryReader.ReadLine();
}
else
{
// revert to a slower implementation here!
}
}
Der größte Trick, wie lange werden wird Abschätzen Die Bildlaufleiste muss (wie viele Zeilen in der Datei enthalten sind). Dazu müssen Sie entweder die Bildlaufleiste ändern, während der Benutzer scrollt oder Sie können Vorkenntnisse, wie lange typische Zeilen in dieser Datei sind und die Länge basierend auf der Gesamtzahl der Bytes schätzen. Wie auch immer, hoffe das hilft!
Ein Hinweis zu virtuellem Modus
virtueller Modus ist ein Verfahren zur Herstellung einer oder ListBox
ähnliche Liste Kontrolle der Verwendung der Elemente auf einer Bedarfsbasis zu laden. Das Steuerelement führt einen Rückruf aus, um die Elemente basierend auf einem Index abzurufen, wenn der Benutzer im Steuerelement scrollt. Dies ist nur dann eine praktikable Lösung, wenn Ihre Daten die folgenden Kriterien erfüllen:
Sie müssen die Anzahl der Datenelemente, die Sie präsentieren möchten (im Vordergrund), kennen. Wenn Sie die gesamte Datei lesen müssen, um diese Summe zu erhalten, wird es nicht für Sie arbeiten!
Sie müssen in der Lage sein, ein bestimmtes Datenelement basierend auf einem Index für dieses Element abzurufen, ohne die gesamte Datei zu lesen.
Sie müssen bereit sein, die Daten in einem Symbol, kleine Details, Details oder anderem unterstütztes Format (oder bereit sein, zu einer Tonne zusätzlicher Arbeit zu gehen, um eine benutzerdefinierte Liste Ansicht zu schreiben) zu präsentieren.
Wenn Sie diese Kriterien nicht erfüllen können, wird der virtuelle Modus nicht besonders hilfreich sein. Die Antwort, die ich mit seek
präsentierte, funktioniert unabhängig davon, ob Sie diese Aktionen ausführen können oder nicht. Natürlich, wenn Sie können erfüllen diese Mindestkriterien, dann auf alle Fälle - suchen Sie im virtuellen Modus für Listenansichten und Sie sollten einige wirklich nützliche Informationen finden!
Sie haben versucht, rechte Steuerelemente, aber im falschen Modus. Suche "Winforms ** virtueller Modus **" (zum Beispiel Listbox). –
Sinatr