我想在应用程序加载时显示启动画面.我有一个带有系统托盘控件的表单.我希望在加载此表单时显示启动画面,这需要一些时间,因为它正在访问Web服务API以填充一些下拉菜单.我还想在加载之前对依赖项进行一些基本测试(也就是说,Web服务可用,配置文件是可读的).随着启动的每个阶段的进行,我想要通过进度更新启动屏幕.
我一直在阅读很多关于线程的内容,但是我对它应该控制的地方感到迷茫(main()方法?).我也想知道它是如何main()工作的,这是应该创建的线程吗?现在,如果带有系统托盘控件的表单是"生命"表单,那么它应该来自那里吗?在形式完成之前不会加载吗?
我不是在寻找代码讲义,更多的是算法/方法,所以我可以一劳永逸地解决这个问题:)
我需要在应用程序启动时显示启动画面几秒钟.有人知道如何实现这个吗?
非常感谢您的帮助.
我通过在运行主表单之前立即启动新线程来显示启动表单.
在这个线程运行的方法中,我正在使用Application.Run,如下面的选项1所示.这是一个正确的方法,或者是否有问题等我,因为我已经两次调用Application.Run?另一种选择是选项2,也在下面显示,我调用.ShowDialog()来显示表单.
启动表单本身在指定时间后关闭,在表单本身内控制,两个选项似乎都运行良好.
所以我的问题是:哪个更受欢迎 - 选项1还是选项2?如果你能给出一个或那个很好的具体原因.
谢谢.
主要片段:
// Run splash screen thread.
Thread splash = new Thread(new ThreadStart(ShowSplash));
splash.Start();
// Run main application.
Application.Run(new MainForm());
Run Code Online (Sandbox Code Playgroud)
显示启动表单选项1:
static void ShowSplash()
{
Application.Run(new SplashForm());
}
Run Code Online (Sandbox Code Playgroud)
显示启动表单选项2:
static void ShowSplash()
{
using (SplashForm splash = new SplashForm())
{
splash.ShowDialog();
}
}
Run Code Online (Sandbox Code Playgroud) 我按照如何:向WPF应用程序添加启动画面中概述的简单步骤,为我的WPF应用程序添加启动画面.当我启动应用程序时,会显示启动图像,然后弹出主窗口,并且启动图像会消失.
我的问题是,当弹出主窗口时,它会出现在初始图像的顶部.然后,当启动图像开始淡出时,启动图像会再次弹出到顶部.最终结果是,当主窗口出现时,启动图像会瞬间消失.
如何强制主窗口出现在启动图像下,以便启动图像不会消失?
在C#windows窗体应用程序中.我有一个启动画面,后台发生了一些多线程进程.我想要做的是当我最初显示启动画面时,我希望它看起来"淡入".然后,一旦所有过程完成,我希望看起来好像启动画面"淡出".我正在使用C#和.NET 2.0.谢谢.
我试图让启动画面首先出现并在启动后MainForm出现.但是我在启动画面中的进度条没有到达栏的末尾.程序继续运行而不起作用.
如何在加载主窗体期间显示启动画面?
我的代码就是这样的:
public partial class SplashForm : Form
{
public SplashForm()
{
InitializeComponent();
}
private void SplashForm_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
timer1.Start();
timer1.Interval = 1000;
progressBar1.Maximum = 10;
timer1.Tick += new EventHandler(timer1_Tick);
}
public void timer1_Tick(object sender, EventArgs e)
{
if (progressBar1.Value != 10)
{
progressBar1.Value++;
}
else
{
timer1.Stop();
Application.Exit();
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下是代码的第一部分MainForm:
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
Application.Run(new SplashForm());
}
}
Run Code Online (Sandbox Code Playgroud)