[visual-studio]自动登录过程 (隐藏窗体) vb.NET Windows 窗体

发布时间: 2014/3/1 3:37:25
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

好吧,我有点麻烦的在这里。我在一个应用程序的窗口中创建一个日志,但想要自动登录的应用程序 (即执行发生时在用户登录的功能) 当它启动,而不显示日志在屏幕中,如果设置已经有一个存储的电子邮件和密码。我有一个通知显示时的系统托盘图标应用程序正在运行,并且该窗体不可见时,一个气球通知会弹出让用户知道它仍在运行,并单击图标以打开日志在屏幕中。

看看下面的代码。我知道,这如果不是事件被调用且工作正常,因为它执行一切EXCEPT语句内隐藏窗体。为什么它不会更改为不可见?我也试过 Me.Hide 和同样的问题。气球通知弹出,与以前存储的数据的文字框填充,但窗体保持可见......

Private Sub RadFrmLogin_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    'Checks settings to see if email and password have already been stored and enters them into text fields, proceeds to automatically update access list
    If Not String.IsNullOrEmpty(My.Settings.Email) And Not String.IsNullOrEmpty(My.Settings.Password) Then
        TxtEmail.Text = My.Settings.Email
        TxtPassword.Text = My.Settings.Password

        Me.Visible = False

        'Displays Balloon Tip
        ntfySystemTrayIcon.ShowBalloonTip(800)
    End If

End Sub

作为添加了说明,我添加了一个测试按钮来隐藏窗体上,和它完美:

Private Sub BtnHide_Click(sender As Object, e As EventArgs) Handles BtnHide.Click
    'Hides form(for testing notification tray icon and balloon tip
    Me.Visible = False
    ntfySystemTrayIcon.ShowBalloonTip(1000)
End Sub

解决方法 1:

(因为他们根本无法支持删除我愚蠢的缺省调试说明)

更新

好的所以有类似的问题之前,看看这里: C#.NET-WinForms-实例化窗体但不显示它 /

简短说明: 通常东西像需要一样使用,所以它永远改变了到可见 = true form_load 完毕后。

要么使用指示的事件 form_shown 并添加可见 = 假

或另一个用户建议更改启动属性的最小化和激活隐藏在任务栏中的程序。这有助于防止那令人讨厌的闪烁。我猜后您可以更改选项回来。

更新 2以下似乎很好的工作:

Private _IsVisible As Boolean
Public Property IsVisible() As Boolean
    Get
        Return _IsVisible
    End Get
    Set(ByVal value As Boolean)
        _IsVisible = value
        If _IsVisible Then
            Me.WindowState = FormWindowState.Normal
            Me.ShowInTaskbar = True
            Me.Visible = True
            Me.Activate()
        Else
            Me.WindowState = FormWindowState.Minimized
            Me.ShowInTaskbar = False
            Me.Visible = False
        End If
    End Set
End Property

如果你想要摆脱的小任务栏闪烁,然后更改窗体属性 showInTaskbar。当它在 form_load 期间更改时,然后似乎那里短的运动,在任务栏上。

并使其完美,在窗体中。所示,添加下列代码:

Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
    Me.Visible = IsVisible
End Sub

现在使用的足够

IsVisible = False

在 form_Load,或如果您想要显示它

IsVisible = True
赞助商