詳細(xì)查看了你的問題,完全不需要使用線程sleep的方法。
創(chuàng)新互聯(lián)專注于稷山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供稷山營(yíng)銷型網(wǎng)站建設(shè),稷山網(wǎng)站制作、稷山網(wǎng)頁(yè)設(shè)計(jì)、稷山網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務(wù),打造稷山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供稷山網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
在這邊,我要給你引入一個(gè)概念。就是Form窗體的兩個(gè)方法。
Form.Show()和Form.ShowDialog()
第一個(gè)Show方法運(yùn)行后,你的主程序還是會(huì)進(jìn)行,你的代碼還是會(huì)繼續(xù)進(jìn)行下去。此時(shí),窗體還是彈出的。
第二個(gè)ShowDialog方法運(yùn)行后,此時(shí),彈出的一個(gè)窗體,你不將其關(guān)閉,那么,主程序就會(huì)一直等待這個(gè)窗體關(guān)閉后,才執(zhí)行后面的代碼。
所以,你只需要使用showdialog這個(gè)方法,即可達(dá)到你想要的結(jié)果。
那么,如何才能讓彈出的窗體不改變呢?很簡(jiǎn)單
你可以找到窗體的formcloseing事件,在這個(gè)事件中,有一個(gè)參數(shù):e
這個(gè)e有一個(gè)屬性,就是e.handle,表示是否處理過這個(gè)事件了。
這個(gè)時(shí)候,如果你不想讓窗體關(guān)閉,你可以寫:
e.handle=true,那么表示已經(jīng)處理過窗體關(guān)閉的事件了。
注:有些情況,可能是:e.cancel=true
首先這個(gè)要看的子函數(shù)執(zhí)行的情況了,比如你子函數(shù)要8秒才能執(zhí)行完成,你1秒鐘執(zhí)行一次,到時(shí)會(huì)有好幾個(gè)子函數(shù)在運(yùn)行,肯定會(huì)影響程序運(yùn)行的。你要調(diào)整時(shí)間才能讓子函數(shù)不影響主程序;
再一個(gè),如果不想影響主程序,你可以再建一個(gè)程序,專門用來執(zhí)行子函數(shù),然后讓那個(gè)程序用定時(shí)器每秒執(zhí)行一次子函數(shù),這樣就不會(huì)影響主程序;
看代碼吧!在上次累加的基礎(chǔ)上繼續(xù)累加
窗體中包含一個(gè)Button1
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Static a As Integer
For i = 1 To 100 '運(yùn)算100次
a = a + i
Next
End Sub
End Class
static 是聲明靜態(tài)變量,只要程序不退出,值就會(huì)一直保存
這樣,你第一次點(diǎn)擊 a的值就是5050
第二次點(diǎn)擊a就變成了 10100