请教:要求在form_Load事件中进行某些判断,通不过则不加载窗体。请问能否做到?(由于某些条件限制,不能在窗体frmOrder.Show()之前进行判断) 
代码:    
        private void frmOrder_Load(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;            try
            {
                ……       
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                this.Close(); //这句不可行,出错。怎么改?
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }

解决方案 »

  1.   

    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);}
    finally
    {
    this.Cursor = Cursors.Default;
    this.Close(); //放到这里
    }
    }
      

  2.   

    对于 MainForm 的加载控制
    最好在 Program.cs 里 new MainForm 之前做判断
      

  3.   

    自己写一个public方法,比如ShowME在里面判断,不过则不加载窗体调用frmOrder.ShowME()
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 最新版本:20070212http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  4.   

    你不能在Load事件里关闭本窗体!你最好把这个操作放到构造对象之前,就是如果条件不成立就不New这个窗体.你可以把条件拿出来做为公用的部分来判断,而不要放到窗体的Load事件里.
      

  5.   

    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    this.Close();//呵,傻了~因为你先关闭了
    }
    finally
    {
    this.Cursor = Cursors.Default;//到这里就继续出错
    去掉
    }
    }
      

  6.   

    最好自己写一个重写show方法,测试通过就base.show,否则就...
      

  7.   

    还不明白?
    this.Cursor = Cursors.WaitCursor;try
    {
    ……
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    this.Close(); //这句不可行,出错。怎么改?
    }
    this.Cursor = Cursors.Default;你应该这样
      

  8.   

    load事件中不能够去写关闭代码很多WinForm类的语言都是这样的。
    还是应该将判断写在show方法之前。
      

  9.   

    最好的方法是将判断放到构造对象之前...如果你没有更改,默认应该是在program.cs中..类似这样..
    static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                if (满足条件)
                {
                     Application.Run(new Form1());
                 }
            }
        }
      

  10.   


    当你catch到错误之后,就把this关了,this已经不存在了,
    然后finally那里又调用了this,所以就出错咯
      

  11.   

    我试过了,你那样写也没问题,没有出错,我在vs2003下面,也没有问题啊,只是窗口闪了一下就消失了;
    private void Form1_Load(object sender, System.EventArgs e)
    {

    try
    {
    System.Convert.ToInt32("ds");
     }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    this.Close(); //这句不可行,出错。怎么改?
    }
    finally
    {
    this.Cursor = Cursors.Default;
    }


    }