【问题标题】:Stop Screen Flashing when making VB.Net form not Visible使 VB.Net 表单不可见时停止屏幕闪烁
【发布时间】: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 的建议。除非此表单启动过程中存在其他相关内容或其他难以撤消的过程。

标签: vb.net winforms


【解决方案1】:

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

【讨论】:

  • 所以如果我按照你的建议实现它,当用户退出时我将如何更改我的代码?
  • 这完全取决于您希望用户看到的内容。一种选择可能是编写一个显示登录对话框并返回指示登录是否成功的Boolean 的方法。然后,您可以从 Startup 事件处理程序调用该方法。您也可以从其他地方调用它,因此您可以处理注销Button 等的Click 事件,Hide 主窗体然后调用登录方法。如果该方法返回True,那么你重置主表单并再次Show,否则你Close它并且应用程序退出。
  • 非常感谢。这让我的程序完全按预期工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多