我有一个应用程序是项目解决方案的一部分。在这个项目中,我希望它能够启动窗体以使其不可见,但在此窗体中可以看到托盘中的通知图标。
我知道将me.hide
添加到form_load
不起作用。我尝试添加一个实例化启动表单的模块,然后将其设置为启动对象。虽然这也不起作用。我的想法已经不多了,这个形式看不见了。任何人都可以帮忙吗?我正在使用VB.NET。
答案 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
子类)的那个,那么您可以选择您的行为。有关详细信息,请参见此处:
答案 5 :(得分:1)
使用Me.Opacity = 0
在加载事件中隐藏表单。
然后在form.Shown事件中使用以下代码
Me.Hide()
Me.Opacity = 100
答案 6 :(得分:0)
尝试一下:
Sub New()
MyBase.SetVisibleCore(False)
End Sub