使VB.Net窗体不可见时,停止屏幕闪烁

时间:2018-10-12 12:12:28

标签: vb.net winforms

对于我正在从事的项目,在用户登录到程序之前,“启动表单”(称为HomeForm)需要是不可见的。现在,我已经对其进行设置,以便通过在登录表单的HomeForm.Visible = False方法中设置Load来使该表单不可见。

Private Sub LoginForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    HomeForm.Visible = False
End Sub

我正在尝试通过这种方式进行设置,以便当用户注销时,表单也将消失。

Private Sub File_Logout_Click(sender As Object, e As EventArgs) Handles File_Logout.Click
    If MessageBox.Show("Are you sure you wish to log out?", "Logout Confirmation", MessageBoxButtons.YesNoCancel) = DialogResult.Yes Then
        LoggedIn = False
        LoginForm.ShowDialog()
    End If
End Sub

现在我遇到了一个小问题:HomeForm在启动时会在屏幕上快速闪烁,然后变得不可见。如何阻止这种情况发生?

我尝试在Me.Visible = False的构造函数和Load方法中都设置HomeForm,但没有完成任何事情。所以我不确定如何解决这个问题。

Public Sub New()
    InitializeComponent()
    Me.Visible = False
End Sub

Private Sub HomeForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.Visible = False
    LoginForm.ShowDialog()
End Sub

1 个答案:

答案 0 :(得分:2)

执行此操作的正确方法是处理应用程序的Startup事件,在其中执行登录,如果用户未成功登录,则将e.Cancel设置为True。您可以通过单击项目属性的“应用程序”页面上的“查看应用程序事件”按钮来访问相应的代码文件,然后使用代码编辑器顶部的下拉列表创建事件处理程序。该事件处理程序在创建启动表单之前执行,并且如果e.Cancel设置为True,则应用程序将退出,而根本不会创建启动表单。更多详细信息here