Vb.net System.Windows.Forms.Form.ActiveForm

Vb.net System.Windows.Forms.Form.ActiveForm,vb.net,winforms,Vb.net,Winforms,我有一个while循环,我想让我的程序在用户激活表单时运行。现在我两个都试过了 While frmLineProduct.ActiveForm.Focus = True While (frmLineProduct.ActiveForm.Equals(True)) 但这两种方法都不管用。我将继续阅读这篇文章,但如果有人已经知道如何做到这一点,我会很感激这一课 您可以实施几个事件来控制状态,例如: Public Property HasFocus As Boolean = True 'global

我有一个while循环,我想让我的程序在用户激活表单时运行。现在我两个都试过了

While frmLineProduct.ActiveForm.Focus = True
While (frmLineProduct.ActiveForm.Equals(True))

但这两种方法都不管用。我将继续阅读这篇文章,但如果有人已经知道如何做到这一点,我会很感激这一课

您可以实施几个事件来控制状态,例如:

Public Property HasFocus As Boolean = True 'global flag

Private Sub Form_Deactivated(sender As Object, e As System.EventArgs) _
    Handles Me.Deactivated
    _hasFocus = False
End Sub

Private Sub Form_Activated(sender As Object, e As System.EventArgs) _
    Handles Me.Activated
    _hasFocus = True
End Sub
然后在代码中:

While Form.Hasfocus
    Application.DoEvents 'a work-around for receiving events while in a while

答案是我以前从未听说过的一种方法,但我的另一篇帖子中有人引导我采用了这种方法

调用方法(委托,对象())


任何感兴趣的人都可以找到答案

谢谢你的回复,我还是个新手,所以我需要问一下。我的循环实际上不会在form.vb代码中,而是在另一个类中。那么,我可以用FormName.LostFocus和FormName.GotFocus替换Me.LostFocus和Me.GotFocus吗?一个窗体很少会获得Get/LostFocus事件,它的子控件会。改为使用已激活和已停用的事件。While无法工作,事件只能在UI线程空闲时触发。Brandon:您可以将该值改为公共属性,然后从类中访问它。汉斯:没错,让我来更新一下事件。Application.DoEvents当然是一个选项,但是。。