13

我有一个应用程序,它是项目解决方案的一部分。在这个项目中,我希望它启动表单是不可见的,但在此表单可见的托盘中仍然有一个通知图标。

我知道添加me.hide到 中form_load是行不通的。我尝试添加一个实例化启动表单的模块,并将其设置为启动对象。虽然那也没用。我已经没有想法让这种形式不可见了。有人可以帮忙吗?我正在使用 VB.NET。

4

7 回答 7

26

将此粘贴到您的表单代码中:

Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
    If Not Me.IsHandleCreated Then
        Me.CreateHandle()
        value = False
    End If
    MyBase.SetVisibleCore(value)
End Sub

工作方式是显示表单的第一个请求,由 Application 类完成,此代码将 Visible 属性覆盖回 False。此后表单将正常运行,您可以调用 Show() 使其可见,并调用 Close() 将其关闭,即使它从不可见。请注意,Load 事件在您显示它之前不会触发,因此请确保将事件处理程序中的任何代码(如果有)移动到构造函数或此覆盖。

于 2012-09-12T18:18:08.610 回答
6

把它放在表单的 Shown 事件中

Me.Visible = False
于 2012-09-12T17:57:36.793 回答
6

最简单的方法是将表单的不透明度设置为 0%。当您希望它出现时,将其设置回 100%

于 2014-09-14T16:05:56.333 回答
3

这是我发现的另一种方法。

设置表单属性

ShowInTaskbar = False

然后在表单的构造函数中添加

WindowState = FormWindowState.Minimized

这很容易实现并且没有闪烁。在我的情况下,我还使用 NotifyIcon 从通知托盘访问程序并设置

WindowState = FormWindowState.Normal
Show()
BringToFront()

在 Notify_MouseClick 事件处理程序中。

要在显示表单后再次隐藏表单,再次最小化并不能很好地完成这项工作。在我的情况下,我使用 Form_Closing 事件并隐藏表单。

Hide()
于 2017-06-28T17:25:59.453 回答
2

用于Me.Opacity = 0在加载事件时隐藏表单。

然后在 form.Shown 事件中使用下面的代码

Me.Hide()
Me.Opacity = 100
于 2017-02-02T13:39:58.137 回答
1

只是为了抛弃一种完全不同的方法,你有没有考虑过使用 a 的重载Application.Run()(并自动显示)Form?如果您使用传入一个ApplicationContext(或更确切地说,您自己的子类ApplicationContext)的那个,那么您可以选择您的行为是什么。有关更多详细信息,请参见此处:

http://msdn.microsoft.com/en-us/library/ms157901

于 2012-09-12T18:31:39.430 回答
0

尝试这个:

Sub New()
    MyBase.SetVisibleCore(False)
End Sub
于 2019-04-11T12:24:40.453 回答