2016-02-18 27 views
0

我正在處理一個項目,該項目逐行獲取文本框索引。 所以當我點擊按鈕時,開始讀取文本索引並且列表框打印它。最後,我將使列表框可見性爲false,然後在fastreport中顯示文本的索引。我試圖克服的是定時器不運行。定時器功能無法傳遞到按鈕事件

另一方面,假設我的文本文件中有10個行的集合。通過使用ReadLine屬性,編譯器由於第11個元素而停止。我該如何處理這個問題。

這是我的代碼。

Public Class Form1 
Dim _report As Report 
Dim val As StreamReader 
Dim fs As FileStream 
Dim second As Integer 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    fs = New FileStream("tf.txt", FileMode.Open, FileAccess.Read) 
    val = New StreamReader(fs) 

    Timer1.Interval = 5000 

End Sub 

Private Sub FileButton_Click(sender As Object, e As EventArgs) Handles FileButton.Click 

    If (ListBox1.SelectedIndex) Then 
     ListBox1.Items.Add(val.ReadLine) 
    End If 
    Timer1.Start() 

    '_report.Load("file.frx") 
End Sub 

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
    ListBox1.Text = DateTime.Now.ToString 

    second = second + 1 
    If second >= 5 Then 
     Timer1.Stop() 

    End If 
End Sub 
+0

這真的很難明白自己在做什麼。 「一行一行地獲取文本框索引」這個短語令人困惑。我認爲你需要用更抽象的術語來描述你想要做的事情。 – Enigmativity

+0

這意味着我在文本文件中有10行,例如(name1,5),(name2,5),直到(name10,5)。我想要做的是當我單擊FileButton時,它顯示列表框中的每個索引。只要我點擊FileButton,它會一直運行到列表結尾。不過,我想用計時器。 – arsnlupn

+0

因此,讀取文本文件,逐行,每秒一行,並在讀取文本框時將每行添加到文本框中? – Enigmativity

回答

0

嘗試使用微軟的反應框架(的NuGet 「RX-的WinForms」):

File _ 
    .ReadAllLines("tf.txt") _ 
    .ToObservable() _ 
    .Zip(Observable.Interval(TimeSpan.FromSeconds(5.0)), Function (line, n) line) _ 
    .ObserveOn(ListBox1) _ 
    .Subscribe(Sub (line) ListBox1.Items.Add(line))