【发布时间】:2018-10-12 12:12:28
【问题描述】:
对于我正在处理的项目,启动表单(称为HomeForm)需要在用户登录程序之前不可见。现在我通过在登录表单的Load 方法中设置HomeForm.Visible = False 来设置它,使表单不可见。
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 在变得不可见之前会在屏幕上快速闪烁。我该如何阻止这种情况发生?
我尝试在HomeForm 的构造函数和Load 方法中设置Me.Visible = False,但没有任何效果。所以我不确定如何解决这个问题。
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
【问题讨论】:
-
如果您不发布任何代码,您的问题的读者只是在猜测......
-
WindowsState=>Minimized在其设计器中。ShowInTaskbar = false如果需要。 -
@Jimi 这样的作品。实施您的建议,有两个问题。首先,我仍然可以 alt+tab 并查看
HomeForm。其次,当我退出程序时,即使我在代码中添加Me.BringtoFront(),登录屏幕也不会出现在前面并成为当前活动窗口。 -
也许你让这变得比它需要的更难。在您满意之前不要创建表单对象。换句话说,将登录表单改为启动表单。如果您以后需要它,您可以隐藏它,例如当用户注销并且您需要关闭主窗口时。
-
您在
Form.Load中忘记了Me.Visible = false。但我会听取 Hans Passant 的建议。除非此表单启动过程中存在其他相关内容或其他难以撤消的过程。