Visual Studio 2022. VB.NET. Windows窗体。两个窗体。Splash和免责声明。Splash窗体应在屏幕上停留3秒,卸载并加载免责声明。Splash窗体工作得很好,但免责声明不停留在屏幕上的下一个动作.现在免责声明形式是空的.我已经添加了一个计时器控件在飞溅的形式和代码如下.免责声明形式停留在屏幕上,如果我使它启动表单并运行项目。
Private Sub timerSplash_Tick(sender As Object, e As EventArgs) Handles timerSplash.Tick
timerSplash.Stop()
Me.Close()
Dim disclaimerForm As New Disclaimer()
disclaimerForm.ShowDialog()
End Sub
字符串
2条答案
按热度按时间s8vozzvw1#
这不是对问题本身的回答,而是显示初始屏幕的另一种方法,比这里使用的方法更好。
我最初在几年前实现了这个想法,为C#应用程序提供闪屏功能,其行为有点像通过应用程序框架内置到VB应用程序中的闪屏功能。去here查看原始C#代码并阅读一些有关原理的解释。
下面是该代码的VB实现。将一个新表单添加到名为
SplashScreen
的项目中,并添加以下代码:字符串
该代码处理启动表单的
Load
事件,并阻止事件处理程序完成,直到等待句柄被触发。请注意,此事件处理程序将始终在表单自己的Load
事件处理程序之后执行,如果有一个,因此,在该事件处理程序中初始化表单的任何工作都将在等待之前完成。闪屏窗体引发其Elapsed
事件。该事件发生的时间在您首先调用DisplaySplashScree
时指定。将一个名为
Program
的模块添加到项目中,并添加以下代码:型
这假设您的项目中有一个
Form1
表单,您希望它成为主/启动表单。它会创建启动表单,然后显示闪屏,然后使用指定的启动表单启动应用。如上所述,该启动表单将被初始化,但直到闪屏关闭时才会显示,在本例中,闪屏关闭是在3000毫秒后。您需要在项目属性中禁用应用程序框架,并将启动对象设置为
Sub Main
,以使该模块成为应用程序的入口点。我忘了提到这段代码的一个主要前提。启动画面是在启动表单的不同线程上创建和显示的,就像VB应用程序框架一样。这一点是,它实际上使启动画面能够做它们最初打算做的事情:给给予用户一些东西看,而应用程序是初始化。如果你显示闪屏调用
ShowDialog
的UI线程,那么这将阻止并阻止你这样做在启动表单中进行任何进一步的工作。如果启动表单实际上没有做任何事情,启动屏幕只是一个广告牌,这很好。如果启动表单中实际上发生了初始化,则需要在不同的线程上创建启动屏幕,因此UI线程可以自由地完成这项工作。pn9klfpd2#
您需要在打开新对话框后关闭启动画面,而不是在此之前。否则,如果这是唯一的窗体,应用程序将关闭。
而不是
字符串
......做这个......
型
如果你不想显示splash窗体,请使用
Show
而不是ShowDialog
。确保将关机模式也设置为OnLastWindowClose
。