是否可以在.Net中使用SplashScreen类在我的应用程序加载时显示动态消息?
类似的东西。
模块一加载...
模块二加载...
等等。
答案 0 :(得分:2)
不,您需要自己编写此功能。内置启动画面只能显示静态图像。
答案 1 :(得分:2)
您可以使用'System.Theading'来完成此操作。下面的代码在一个单独的线程上启动一个“启动画面”,而你的应用程序(在我下面的例子中称为MainForm())加载或初始化。首先在你的“main()”方法中(在program.cs文件中,除非你已经重命名),你应该显示你的启动画面。这将是您希望在启动时向用户显示的WinForm或WPF表单。这是从main()启动,如下所示:
[STAThread]
static void Main()
{
// Splash screen, which is terminated in MainForm.
SplashForm.ShowSplash();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// Run UserCost.
Application.Run(new MainForm());
}
在您的SplashScreen代码中,您需要以下内容:
public partial class SplashForm : Form
{
// Thredding.
private static Thread _splashThread;
private static SplashForm _splashForm;
public SplashForm()
{
InitializeComponent();
}
// Show the Splash Screen (Loading...)
public static void ShowSplash()
{
if (_splashThread == null)
{
// show the form in a new thread
_splashThread = new Thread(new ThreadStart(DoShowSplash));
_splashThread.IsBackground = true;
_splashThread.Start();
}
}
// Called by the thread
private static void DoShowSplash()
{
if (_splashForm == null)
_splashForm = new SplashForm();
// create a new message pump on this thread (started from ShowSplash)
Application.Run(_splashForm);
}
// Close the splash (Loading...) screen
public static void CloseSplash()
{
// Need to call on the thread that launched this splash
if (_splashForm.InvokeRequired)
_splashForm.Invoke(new MethodInvoker(CloseSplash));
else
Application.ExitThread();
}
}
这将在单独的后台线程上启动splash表单,允许您同时继续呈现主应用程序。要显示有关加载的消息,您必须从主UI线程中提取信息,或者以纯粹美学的方式工作。要在初始化应用程序时关闭并关闭启动画面,请将以下内容放在默认构造函数中(如果需要,可以重载构造函数):
public MainForm()
{
// ready to go, now initialise main and close the splashForm.
InitializeComponent();
SplashForm.CloseSplash();
}
上面的代码应该相对容易理解。
我希望这会有所帮助。