本来打算做一个软件的欢迎界面,网上找了找,发现别人都是用什么类啊的来写的,但是好像没必要那么麻烦吧....我的想法是这样的:在原程序的基础上再做一个窗体(当然,要美化一下),然后把该窗体作为启动窗体,当该欢迎窗体即将关闭的时候调用另一个窗体(原先要运行的窗体)
我是在欢迎窗体的FormClosing事件里将那个要调用的窗体show出来的,但是这个方法好像有点问题,就是show了之后马上就关闭了,程序也就退出了,我在FormClose事件里写也不行,不知为什么呢?
后来我调试了一下,好像每次都是去执行那个mainform.Designer.cs(被调用窗体)文件里的下面这个方法,然后就退出了,怎么回事呢?protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
1.你使用多线程和类那样的组件方法
2.就是你想自己做个简单的form对于方法的处理
我的喜欢的处理的方式:1.在program.cs里的程序入口做(所有程序的MainForm最好用)
2.在InitializeComponent()前showdialog()意思是你把闪屏formsplash做成自定义的模式对话框,加一个start按钮,或加formsplash_click事件
formsplash_click
{this.DialogResult=DialogResult.OK;} /start_click里要写
{
start.DialogResult=DialogResult.OK;
this.DialogResult=start.DialogResult
}
这之前你想处理其它的事都可以,加if判断就是再执行this.DialogResult=DialogResult.OK;
Application.Run(欢迎窗体)
主窗体.Show();
对吧?Application.Run会开启一个消息循环,以维持窗体,你把欢迎窗体关了,消息循环不复存在,主窗体.Show就无法维持解决方法很多,这里最简单的就是主窗体.ShowDialog(而不是Show方法),来启动模式窗体,就可以维持了本来打算做一个软件的欢迎界面,网上找了找,发现别人都是用什么类啊的来写的,但是好像没必要那么麻烦吧....我的想法是这样的===>你太不谦虚了.你的欢迎窗体不也是一个Form吗,难道不是类?
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
frmWelcome myWelcome = new frmWelcome();
if (myWelcome.ShowDialog() == DialogResult.OK)
{
Application.Run(new frmMain());
}
}在欢迎窗体里就要看你是以哪种方式实现了,是以等待几秒钟关闭欢迎窗体,调出主窗体,还是以点击按钮方式关闭欢迎窗体,调出主窗体
//等待2秒钟方式,拖个timer控件,frmWelcome.cs里
private void timer1_Tick(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
private void frmWelcome_Load(object sender, EventArgs e)
{
timer1.Interval = 2000;
timer1.Start();
}
//点击按钮关闭,frmWelcome.cs里
private void btnOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
大致思路就这样,至于关闭按钮等细节方面的处理,楼主自己做下吧
Form1:
Form2 newForm2=new Form2();
this.Hide();
newForm2.show();
newForm2.Owner=this;Form2:
在关闭事件里写入:this.Owner.show();
myWebcome.Show();
Application.Run(new frmMain());
在frmMain中把myWelcome关闭就好了。
只是不知道跟其他人用一个很长的类来实现有什么本质上的区别没有
再次谢谢各位啦....