单击按钮后,表单失去焦点

时间:2010-07-22 02:06:51

标签: vb.net forms

单击下面代码中的开始按钮时,表单似乎失去焦点,我需要单击停止按钮两次以停止计数。 (首先点击激活表格,然后点击第二个按钮)有人可以解释一下这种行为还是提供更好的选择?

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

1 个答案:

答案 0 :(得分:0)

表单没有松散的焦点。单击开始按钮后,停止按钮不会获​​得焦点 - 您可以在btnStart_Click中将其聚焦(btnStop.Focus())。 另一个问题是你应该改变你的测试功能。它更像是一个基准。 阅读一些关于为什么使用Application.DoEvents could be dangerous并且一般为poor design的文章。最好使用System.Windows.Forms.TimerBackgroundWorkers代替。 我认为在你的代码中,Application.DoEvents首先只让停止按钮获得焦点,你需要再次点击来执行点击事件。