我不能使用do,直到和使用Form.visible控件

时间:2017-07-08 13:37:16

标签: .net vb.net winforms

我正在尝试使用Do Until创建表单。问题是当运行此代码时,我得到一个异常:“System.InvalidCastException”。 所以这是我试图运行的代码:

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim x As Boolean = False
    Do Until x
        If Form2.Visible = False & Form3.Visible = False & Form4.Visible = False Then
            x = True
        End If
    Loop
End
End Sub

另外作为我正在尝试做的解释:当form2,form3和form4不可见时程序将结束

1 个答案:

答案 0 :(得分:2)

在VB.NET中,使用的逻辑运算符是或更好 AndAlso

If Form2.Visible = False AndAlso 
   Form3.Visible = False AndAlso 
   Form4.Visible = False Then
   x = True
End if

AndAlso更好,因为如果运算符的左侧是假的,那么它会立即中断测试而不评估线的其余部分

当然,请记住,如果这些形式中的任何一个是可见的,那么这个循环就是一个无限循环。它将继续无限制地运行,您无法对其他表单执行任何操作以允许其退出。这将有效地粉碎你的用户界面 至少你需要在这里添加一个Application.DoEvents以允许在该循环中发生一些其他动作。