我有一个小的Windows窗体项目,现在我希望在项目启动时显示图像,我的意思是Program.cs
有可能吗?
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Image MyPrgImage = Image.FromFile("C:\\Temp\\Images\\For_Network.gif");
??????
Application.Run(new Form1());
}
答案 0 :(得分:6)
当然......将新的WindowsForm
添加到您的项目中,将其命名为SplashImageForm
。添加PictureBox
控件,然后在其中添加所需的图像。调整表单大小,设置这些SplashImageForm
属性:
FormBorderStyle - None
ShowInTaskBar - false
StartPosition - CenterScreen
然后你想在Form1之前显示该表单并在超时到期后关闭它...例如:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
SplashImageForm f = new SplashImageForm();
f.Shown += new EventHandler((o,e)=>{
System.Threading.Thread t = new System.Threading.Thread(() =>
{
System.Threading.Thread.Sleep(2000);
f.Invoke(new Action(() => { f.Close(); }));
});
t.IsBackground = true;
t.Start();
});
Application.Run(f);
Application.Run(new Form1());
}
修改强>
现在,有一个新线程在System.Threading.Thread.Sleep(2000)
上阻塞了2秒,主线程被允许在Application.Run(f)
上阻塞,直到SplashImageForm
没有关闭。因此,图像由主线程加载,GUI响应。
当超时结束时,调用Invoke()
方法,因此作为表单所有者的主线程将关闭它。如果不在这里,将抛出交叉线程异常。
现在图像显示2秒,然后显示Form1。
答案 1 :(得分:2)
你的意思是一个闪屏,对吧?
考虑添加对Microsoft.VisualBasic的引用(如果尚未完成),然后设置WindowsFormsApplicationBase.SplashScreen
属性。
还有几点:
答案 2 :(得分:1)
您需要一个简单的表单(可能带有PictureBox)来加载和显示图像。然后在加载主表单后将其删除。
答案 3 :(得分:0)
只需添加一个窗口表单(让表单的名称为imgsplash)&来自以下选项: -
FormBorderStyle - 无在此表单中设置背景图像[您想在应用程序启动时显示的图像]
- 现在在program.cs中添加以下步骤: -
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
imgsplash f = new imgsplash();
f.Show();
System.Threading.Thread.Sleep(2000);
f.Close();
Application.Run(new Form1());
}