按钮单击另一个中的事件

时间:2014-04-28 19:49:32

标签: vb.net winforms

我有两个按钮开始按钮和停止按钮。我通过单击开始按钮运行我的程序。我想在开始按钮期间停止程序。但该计划直到开始才会完成其工作。我该怎么做才能在开始时检查停止。我听说过线程,但我不知道怎么做。

Private Sub Button_Start (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  //my code
  //check always if the user push stop if no continue if yes go to this sub
  //my code
end sub

Private Sub Button_Stop  (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  stopClick = True
  Dim Response As Integer
  Response = MessageBox.Show("Do you really want to exit?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
  If Response = vbYes Then
    Me.Close()
  End If
End Sub

2 个答案:

答案 0 :(得分:0)

您可以在函数中使用线程放置button1代码并使用该线程。
你可以参考这个例子

'Thread created to handle the Background process for start_function
Dim t As System.Threading.Thread

Private Sub start_function()
    While True
        'your code here for Eg:
        Dim i As Integer
        i = i + 1
    End While

End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    t = New System.Threading.Thread(AddressOf Me.start_function)
    t.Start()

End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    t.Abort()
End Sub

答案 1 :(得分:0)

将backgroundworker组件拖到表单上。

Imports System.ComponentModel

Public Class Form1

Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
    Me.Text = "Busy Doing Work"

    BackgroundWorker1.WorkerSupportsCancellation = True
    BackgroundWorker1.RunWorkerAsync()
End Sub

Private Sub btnStop_Click(sender As Object, e As EventArgs) Handles btnStop.Click
    Me.Text = "Asking to Cancel"
    BackgroundWorker1.CancelAsync()
End Sub

Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    While Not BackgroundWorker1.CancellationPending
        System.Threading.Thread.Sleep(1000)
    End While
End Sub


Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
    Me.Text = "Cancelled"
End Sub

End Class