本来打算做一个软件的欢迎界面,网上找了找,发现别人都是用什么类啊的来写的,但是好像没必要那么麻烦吧....我的想法是这样的:在原程序的基础上再做一个窗体(当然,要美化一下),然后把该窗体作为启动窗体,当该欢迎窗体即将关闭的时候调用另一个窗体(原先要运行的窗体)
我是在欢迎窗体的FormClosing事件里将那个要调用的窗体show出来的,但是这个方法好像有点问题,就是show了之后马上就关闭了,程序也就退出了,我在FormClose事件里写也不行,不知为什么呢?
后来我调试了一下,好像每次都是去执行那个mainform.Designer.cs(被调用窗体)文件里的下面这个方法,然后就退出了,怎么回事呢?protected override void Dispose(bool disposing)
{
    if (disposing && (components != null))
    {
        components.Dispose();
    }
    base.Dispose(disposing);
}

解决方案 »

  1.   

    本来就是两种方法
    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;
      

  2.   

    不要把欢迎窗口做为主窗口,主窗口也不能关闭,关闭程序就退出了欢迎窗体 vishable=false;
      

  3.   

    感觉欢迎窗口是主窗口,会出现那个问题,直接hide感觉好一些
      

  4.   

    我给你解释一下,你应该是这样:
    Application.Run(欢迎窗体)
    主窗体.Show();
    对吧?Application.Run会开启一个消息循环,以维持窗体,你把欢迎窗体关了,消息循环不复存在,主窗体.Show就无法维持解决方法很多,这里最简单的就是主窗体.ShowDialog(而不是Show方法),来启动模式窗体,就可以维持了本来打算做一个软件的欢迎界面,网上找了找,发现别人都是用什么类啊的来写的,但是好像没必要那么麻烦吧....我的想法是这样的===>你太不谦虚了.你的欢迎窗体不也是一个Form吗,难道不是类?
      

  5.   

    你的想法和做一个简单的Login窗体是一个思路,稍稍变通下就可以了//Program.cs里 static void Main()
    {
        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;
    }
    大致思路就这样,至于关闭按钮等细节方面的处理,楼主自己做下吧
      

  6.   

    设Form1为原来的窗体,Form2为欢迎窗体.
    Form1:
    Form2 newForm2=new Form2();
    this.Hide();
    newForm2.show();
    newForm2.Owner=this;Form2:
    在关闭事件里写入:this.Owner.show();
      

  7.   

    frmWelcome myWelcome = new frmWelcome();
    myWebcome.Show();
        
    Application.Run(new frmMain());
    在frmMain中把myWelcome关闭就好了。
      

  8.   

    CsToD最后一句说的是,不够谦虚,呵呵,谢谢各位了,后来我用了隐藏的方法,
    只是不知道跟其他人用一个很长的类来实现有什么本质上的区别没有
    再次谢谢各位啦....