Durchlaufen Sie eine Datei in VB.NET
Schreibe ich eine VB.NET Programm und ich bin versucht zu erreichen, die folgenden:
- Lesen und Schleife durch eine text-Datei Zeile für Zeile
- Zeigen die Veranstaltung von der Schleife in eine textbox oder label, bis eine Taste gedrückt wird
- Die Schleife wird dann halt auf jede Zahl, die passiert werden in der loop-event-und
- Wenn eine Taste erneut gedrückt wird die Schleife fortgesetzt.
- Code
Imports System.IO
Public Class Form1
'Dim nFileNum As Integer = FreeFile() ' Get a free file number
Dim strFileName As String = "C:\scb.txt"
Dim objFilename As FileStream = New FileStream(strFileName, _
FileMode.Open, FileAccess.Read, FileShare.Read)
Dim objFileRead As StreamReader = New StreamReader(objFilename)
'Dim lLineCount As Long
'Dim sNextLine As String
Private Sub btStart_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btStart.Click
Try
If objFileRead.ReadLine = Nothing Then
MsgBox("No Accounts Available to show!", _
MsgBoxStyle.Information, _
MsgBoxStyle.DefaultButton2 = MsgBoxStyle.OkOnly)
Return
Else
Do While (objFileRead.Peek() > -1)
Loop
lblAccounts.Text = objFileRead.ReadLine()
'objFileRead.Close()
'objFilename.Close()
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
'objFileRead.Close()
'objFilename.Close()
End Try
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Load
End Sub
End Class
Problem
Ich in der Lage bin, den text zu Lesen-Datei, aber mein label wird nur die Schleife, wenn ich auf die start-Taste. Es geht auf die nächste Zeile, aber ich will es weiterhin um eine Schleife durch die gesamte Datei erst dann, wenn ich drücken Sie eine Taste, sagen Sie zu stoppen.
- Okay, was für ein problem haben Sie?
- Lesen kann ich den text-Datei, aber mein label wird nur die Schleife, wenn ich auf die start-Taste, geht es in der nächsten Zeile auf den text-Datei und ich möchte es loop kontinuierlich, bis ich auf den einen Knopf, und es wird aufhören, und wenn ich drücken Sie die Taste erneut wieder aufgenommen wird, von wo es zu stoppen und die loop-Prozess sollte mit auf das label. Das ist mein problem, das bt kann ich es noch herausfinden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich kann Ihnen sagen, eine Sache, das:
werden innen der Do-While-Schleife:
Bearbeitet, um hinzufügen
Den obigen code nicht wirklich nützlich. Die text-Datei gelesen werden, so schnell, dass nur die Letzte Zeile in lblAccounts.
Können Sie zumindest sehen die Namen Fliegen durch, wenn Sie dies tun:
Dies sollte Ihnen einen Anhaltspunkt zum anhalten und starten. Hier ist pseudocode:
Sollten Sie einen Background-Worker für diese Art von Job, auch würde ich es nicht Lesen aus der Datei direkt, ich würde zwischengespeichert.
Edit:
Gleiche gilt für das ProgressChanged-Ereignis.
Edit2: Und vergessen Sie nicht, setzen Sie die Eigenschaft
WorkerReportsProgress
zuTrue
.ReportProgress
, aber das Ereignis wird aufgerufenProgressChanged
.RunWorkerASync()
.