詳細(xì)查看了你的問(wèn)題,完全不需要使用線(xiàn)程sleep的方法。

為倉(cāng)山等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及倉(cāng)山網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、倉(cāng)山網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
在這邊,我要給你引入一個(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,表示是否處理過(guò)這個(gè)事件了。
這個(gè)時(shí)候,如果你不想讓窗體關(guān)閉,你可以寫(xiě):
e.handle=true,那么表示已經(jīng)處理過(guò)窗體關(guān)閉的事件了。
注:有些情況,可能是:e.cancel=true
定義一個(gè)公有布爾值變量 flag,初始值 False。
循環(huán)里最開(kāi)始 If 判斷一下 flag,如果為 True 就 Exit Do 跳出循環(huán),否則繼續(xù)循環(huán)。
然后在別的函數(shù)控制 flag 的值就可以了。
P.S. 你這段代碼是死循環(huán),直到程序占用內(nèi)存越來(lái)越大溢出進(jìn)而程序崩潰為止……
好像不難吧?
我放進(jìn)了Button1的Click事件里。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
On Error GoTo Errmessages '在做系統(tǒng)操作時(shí)加排錯(cuò)標(biāo)簽是個(gè)好習(xí)慣
Dim TargetName As String = "ibmdict" '存儲(chǔ)進(jìn)程名為文本型,注:進(jìn)程名不加擴(kuò)展名
Dim TargetKill() As Process = Process.GetProcessesByName(TargetName) '從進(jìn)程名獲取進(jìn)程
Dim TargetPath As String '存儲(chǔ)進(jìn)程路徑為文本型
If TargetKill.Length 1 Then '判斷進(jìn)程名的數(shù)量,如果同名進(jìn)程數(shù)量在2個(gè)以上,用For循環(huán)關(guān)閉進(jìn)程。
For i = 0 To TargetKill.Length - 1
TargetPath = TargetKill(i).MainModule.FileName
TargetKill(i).Kill()
Next
ElseIf TargetKill.Length = 0 Then '判斷進(jìn)程名的數(shù)量,沒(méi)有發(fā)現(xiàn)進(jìn)程直接彈窗。不需要的,可直接刪掉該If子句
MsgBox("沒(méi)有發(fā)現(xiàn)進(jìn)程!")
Exit Sub
ElseIf TargetKill.Length = 1 Then '判斷進(jìn)程名的數(shù)量,如果只有一個(gè),就不用For循環(huán)
TargetKill(0).Kill()
End If
MsgBox("已終止" TargetKill.Length "個(gè)進(jìn)程") '彈窗提示已終止多少個(gè)進(jìn)程
Errmessages: ‘定義排錯(cuò)標(biāo)簽
If Err.Description Nothing Then ’判斷有無(wú)錯(cuò)誤,如果有,則 ↓
MsgBox(Err.Description) '當(dāng)出現(xiàn)錯(cuò)誤時(shí),彈窗提示
End If
End Sub
可根據(jù)需要自行修改,這個(gè)備注夠完善了吧?不會(huì)的再Hi我。
Dim key_state As Integer = 0
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.KeyPreview = True '設(shè)置窗體響應(yīng)鍵盤(pán)操作
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
'MsgBox(e.KeyCode) '這行開(kāi)啟可以測(cè)試你輸入的按鍵代碼
If key_state = 0 Then e.Handled = True '取消操作
Select Case e.KeyCode
Case 49 '按鍵1
'................操作腳本
Case 50 '按鍵2
'................操作腳本
End Select
End Sub
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
e.Handled = True '取消操作
End Sub
'*******************************************************************************另一種方法
AddHandler Me.KeyDown, AddressOf Form1_KeyDown '需要時(shí)加入事件
RemoveHandler Me.KeyDown, AddressOf Form1_KeyDown '不需要時(shí)刪除事件
網(wǎng)站名稱(chēng):vb.net停止事件的簡(jiǎn)單介紹
轉(zhuǎn)載來(lái)源:http://chinadenli.net/article20/doecojo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、做網(wǎng)站、App設(shè)計(jì)、網(wǎng)站排名、網(wǎng)頁(yè)設(shè)計(jì)公司、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)