winform登录后开始加载主窗体并显示闪屏

fengjian_428 2009-09-11 11:20:17
类似于SplashScreen,简单的说就是在窗体加载的过程中在屏幕上显示另一个窗体,像VS一样
不过不是在程序刚启动的时候显示启动画面 而是在点击登录窗体的登录按钮后主窗体加载完毕前显示,有没有人做过这样的效果?
...全文
520 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
BitCoffee 2009-09-11
  • 打赏
  • 举报
回复
你如果是要show无边框窗体的同时就加载主窗体的话,那就按照下面的做.
=================================
登录窗体:
public static bool bl;
登录成功之后:
bl=false;
this.hide();
主窗体 frm主窗体 = new 主窗体();
frm主窗体.show();
frm主窗体.Visible = false;
show无边框窗体.
=================================
无边框窗体:
timer_click事件里写:
if(登录窗体.bl == true)
{
this.close();
}
=================================
主窗体:
注意主窗体设置以最小化启动,不然会出现闪屏。
Load事件里:
加载完之后:
登录窗体.bl = true;
this.WindowState = FormWindowState.Normal;
zhaoweiting0609 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 gomoku 的回复:]
C# codeusing System;using System.Drawing;using System.Windows.Forms;using System.Threading;namespace WindowsFormsApplication1
{publicclass Form1 : Form
{protectedoverridevoid OnLoad(EventArgs e)
{base.OnLoad(e);// show the splash SplashForm form=new SplashForm();
form.Show();// give a chance to the splash to draw itself. Application.DoEvents();// time consuming tasks...for (int i=0; i<50; i++)
{
Thread.Sleep(100);
}// close the splash form.Close();
}

[STAThread]staticvoid Main()
{if (MessageBox.Show("Click OK to login")== DialogResult.OK)
{
Application.Run(new Form1());
}
}
}publicclass SplashForm : Form
{public SplashForm()
{this.StartPosition= FormStartPosition.CenterScreen;this.FormBorderStyle= FormBorderStyle.None;this.ShowInTaskbar=false;this.Size=new Size(200,200);
}protectedoverridevoid OnPaint(PaintEventArgs e)
{using(Font biggerFont=new Font(FontFamily.GenericSansSerif,20))
{
e.Graphics.DrawString("Hello Splash", biggerFont, Brushes.Azure,new PointF(20,80));
}
}
}
}
[/Quote]

应该可以,就是一个顺序的问题
BitCoffee 2009-09-11
  • 打赏
  • 举报
回复
你点击登录的时候就只时候show无边框的窗体,然后在无边框的窗体里用timer控制时间,时间到了之后,
show主窗体;
this.close();不是这样的效果吗?
[Quote=引用 9 楼 fengjian_428 的回复:]
show无边框窗体的同时要加载主窗体。
能不能贴点代码出来? 搞了好久都没实现这个效果
[/Quote]
peterb 2009-09-11
  • 打赏
  • 举报
回复
王向飞 2009-09-11
  • 打赏
  • 举报
回复
帮顶
gomoku 2009-09-11
  • 打赏
  • 举报
回复
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;

namespace WindowsFormsApplication1
{
public class Form1 : Form
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);

// show the splash
SplashForm form = new SplashForm();
form.Show();

// give a chance to the splash to draw itself.
Application.DoEvents();

// time consuming tasks...
for (int i = 0; i < 50; i++)
{
Thread.Sleep(100);
}

// close the splash
form.Close();
}

[STAThread]
static void Main()
{
if (MessageBox.Show("Click OK to login") == DialogResult.OK)
{
Application.Run(new Form1());
}
}
}

public class SplashForm : Form
{
public SplashForm()
{
this.StartPosition = FormStartPosition.CenterScreen;
this.FormBorderStyle = FormBorderStyle.None;
this.ShowInTaskbar = false;
this.Size = new Size(200, 200);
}

protected override void OnPaint(PaintEventArgs e)
{
using(Font biggerFont = new Font(FontFamily.GenericSansSerif, 20))
{
e.Graphics.DrawString("Hello Splash", biggerFont, Brushes.Azure, new PointF(20, 80));
}
}
}
}
fengjian_428 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 bitcoffee 的回复:]
同样是用timer定时控制此窗体,不是以此窗体启动的话,就可以Close.定时控制Close的同事show新窗体.
引用 6 楼 fengjian_428 的回复:
引用 3 楼 bitcoffee 的回复:
貌似LZ说的是欢迎界面.
可以做一个无边框界面,程序以此界面启动,然后用timer定时hide此窗体,并打开登录窗体.

是先打开登录窗体 点了登录后才要这个界面出现


[/Quote]
show无边框窗体的同时要加载主窗体。
能不能贴点代码出来? 搞了好久都没实现这个效果
BitCoffee 2009-09-11
  • 打赏
  • 举报
回复
同样是用timer定时控制此窗体,不是以此窗体启动的话,就可以Close.定时控制Close的同事show新窗体.
[Quote=引用 6 楼 fengjian_428 的回复:]
引用 3 楼 bitcoffee 的回复:
貌似LZ说的是欢迎界面.
可以做一个无边框界面,程序以此界面启动,然后用timer定时hide此窗体,并打开登录窗体.

是先打开登录窗体 点了登录后才要这个界面出现

[/Quote]
fengjian_428 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qlzf11140820 的回复:]
C# codehttp://blog.csdn.net/kenkao/archive/2009/02/25/3937056.aspx你要的
[/Quote]
SplashScreen是启动程序的时候就出现了 我要的是点了登录按钮之后才出现
fengjian_428 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bitcoffee 的回复:]
貌似LZ说的是欢迎界面.
可以做一个无边框界面,程序以此界面启动,然后用timer定时hide此窗体,并打开登录窗体.
[/Quote]
是先打开登录窗体 点了登录后才要这个界面出现
fengjian_428 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
这有什么呀,控制好顺序就行了
[/Quote]
你有例子?
qlzf11140820 2009-09-11
  • 打赏
  • 举报
回复
http://blog.csdn.net/kenkao/archive/2009/02/25/3937056.aspx你要的
BitCoffee 2009-09-11
  • 打赏
  • 举报
回复
貌似LZ说的是欢迎界面.
可以做一个无边框界面,程序以此界面启动,然后用timer定时hide此窗体,并打开登录窗体.
aspnet19851111 2009-09-11
  • 打赏
  • 举报
回复
帮顶
bdmh 2009-09-11
  • 打赏
  • 举报
回复
这有什么呀,控制好顺序就行了
freeboy827 2009-09-11
  • 打赏
  • 举报
回复
帮顶,我也想知道
zkyEric 2009-09-11
  • 打赏
  • 举报
回复
UP
BitCoffee 2009-09-11
  • 打赏
  • 举报
回复
忘了在主窗体加载完之后要this.Visible = true的

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧