2010-07-22 257 views
0

單擊下面的代碼中的開始按鈕後,窗體失去焦點,表單似乎失去焦點,我需要點擊兩次停止按鈕停止計數。 (首先點擊激活表單,然後點擊按鈕)有人可以解釋這種行爲或提供更好的選擇?單擊按鈕

Public Class Form1 
    Dim testrunning As Boolean 

    Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click 
     testrunning = True 
     test() 
    End Sub 

    Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStop.Click 
     testrunning = False 
    End Sub 

    Private Sub test() 
     Dim count As Integer 

     While testrunning = True 
      count += 1 
      TextBox1.Text = count.ToString 
      System.Threading.Thread.Sleep(100) 
      Application.DoEvents() 
     End While 
    End Sub 
End Class 

回答

0

該表格並沒有放鬆焦點。單擊開始按鈕後,停止按鈕無法獲得焦點 - 您可以在btnStart_Click中將焦點(btnStop.Focus())給予焦點。 另一個問題是你應該改變你的測試功能。它更像是一個基準。 閱讀一些關於爲什麼使用Application.DoEvents could be dangerous和通常是poor design的文章。取而代之的是使用System.Windows.Forms.TimerBackgroundWorkers。 我認爲在您的代碼中,Application.DoEvents首先只讓停止按鈕獲得焦點,並且您需要再次單擊以執行單擊事件。