2013-11-04 43 views
0

它不像一個按鈕中連續編碼..
比方說,我想顯示「我很好」後顯示「你好世界」 我想我可以做這與一個課程計時器,但我認爲有另一種方式,這就是我現在想知道的。如何運行一個接一個的代碼行vb.net

這裏是我的代碼..

Private Sub btnSettings_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSettings.Click 
    Dim str As String = rtb.Text 
    Dim star() As String 

    star = str.Split("="c, ":"c) 

    txtIP.Text = star(3) 




End Sub 

這種方法獲取字符串中的格式文本框的一部分。
現在,我需要將字符串的「部分」顯示給多個文本框。
那麼,我想要達到的是,在執行之後,我可以一次又一次地做到這一點嗎?具有不同的課程指標。
比方說索引3之後,我想索引4,索引10等..謝謝!

+0

什麼阻止你寫'txtIP'代碼之後的另一行'txtXXX.Text = star(4)'等等? – Steve

+0

從技術上講,我們可以添加更多的代碼,因爲它是繼續進程的權利?但是,我需要的是做同樣的過程,與 'txtIP.Text = star(4)' star(5),6, 7等等不同的分隔符 如果我只是聲明另一個變量就像是做了10次那麼它會好嗎 – AdorableVB

回答

0

最簡單的方法是爲每個循環使用一個。

For Each s As String in star 
    textIP.Text = s 
    Threading.Thread.Sleep(1000) ' this line let us wait 1000 ms 
    Next 

這樣你的應用程序就卡住了。一個改進是做windows事件,另一個改進是使用線程(如BackGroundWorker/Timer)。首先讓我們看看windows事件。

Dim i As Integer 
Dim i2 as Integer 
While i2 < star.Count 
    Threading.Thread.Sleep(10) ' this line let us wait 10ms 
    Application.DoEvents() ' this lines checks every 10ms, if an event occured 
    If i Mod 100 = 0 Then ' every 100 running by, we change the text 
     textIP.Text = star(i2) 
     i2 += 1 
    End if 
    i += 1 
End While 

與一個BackgroundWorker或定時器的最後方式提供了更大的靈活性,是在一個大的應用程序要走的路,或者如果你想改變文本很長一段時間使用應用程序時。要解釋完整的BackGroundWorker解決方案需要更多時間,那麼現在就有了。只要看看BackGroundWorker(bgw)。在「bgw.DoWorkEvent」中,您必須在此放置與第二種解決方案類似的代碼。但不是「textIP.Text = star(i2)」這一行,您必須報告進度(「bgw.ReportProgress(star(i2)」)並獲取「bgw.ProgressChangedEvent」中的文本。「e.UserState」包含你的文本,不要忘記用「bgw.WorkerSupportsProgressReport」激活ProgressReport。

+0

感謝您的解釋,但我想要的是重複相同的過程, e我發佈了不同的索引。我的意思是相同的代碼,但不同的字符串輸出。既然你編碼了txtIP.Text = star(i2)......它會不會與我在分裂時完成的第一個重疊?我認爲這可能有錯誤。 – AdorableVB

相關問題