如何拥有一个无形的启动表单?

时间:2012-09-12 17:50:20

标签: vb.net winforms visual-studio-2010

我有一个应用程序是项目解决方案的一部分。在这个项目中,我希望它能够启动窗体以使其不可见,但在此窗体中可以看到托盘中的通知图标。

我知道将me.hide添加到form_load不起作用。我尝试添加一个实例化启动表单的模块,然后将其设置为启动对象。虽然这也不起作用。我的想法已经不多了,这个形式看不见了。任何人都可以帮忙吗?我正在使用VB.NET。

7 个答案:

答案 0 :(得分:20)

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

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事件在显示之前不会触发,因此请确保将事件处理程序中的任何代码(如果有)移动到构造函数或此覆盖中。

答案 1 :(得分:6)

将此信息放入表格所示的事件

Me.Visible = False

答案 2 :(得分:6)

最简单的方法是将表单的不透明度设置为0%。如果要显示,请将其重新设置为100%

答案 3 :(得分:3)

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

使用

设置表单属性
ShowInTaskbar = False

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

WindowState = FormWindowState.Minimized

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

WindowState = FormWindowState.Normal
Show()
BringToFront()

在Notify_MouseClick事件处理程序中。

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

Hide()

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

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

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

Me.Hide()
Me.Opacity = 100

答案 6 :(得分:0)

尝试一下:

Sub New()
    MyBase.SetVisibleCore(False)
End Sub