WinForm中,一个Form在加载的时候判断某种条件不成立,然后就要进行关闭操作,请问如何执行在Form_Load事件中关闭Form?

解决方案 »

  1.   

            private void Form1_Load(object sender, EventArgs e)
            {
                Close();
            }
      

  2.   

    this.close 如用户登陆,登陆不成功,退出 application.exit
      

  3.   

    application.exit
      
    *****************************************************************************
    麦壳饼
    http://www.mysticboy.cn/default.asp?cateID=47
    DotNet游戏引擎预览版0.001发布.
      

  4.   

    来晚了  人家都答了     
    this.Dispose( true );application.exit 
      

  5.   

    在Load的时候不可以关闭窗口,如果需要由某个条件而不能显示窗体可以写一个公用的方法,在建立窗体后启动窗体前来通过方法决定是否要显示窗体还是销毁窗体,比如:Form1 f=new Form1();if(f.AllowLoad())
    {
       f.Show();
    }
    else
    {
       f.Close();
    }
    最好不要在Load里判断或操作使窗体Close()
      

  6.   

    agree 7楼. form_load中直接关闭窗体退出程序的做法有问题.
      

  7.   

    this.Dispose( true ); application.exit 
      

  8.   


    这个肯定不行的,Load不可以Close
    application.exit 会导致整个程序退出我以前的做法是设置一个标志,然后通过定时器限定在几百毫秒内关闭掉这个窗体。通过Load判断是否需要关闭当前窗体是有意义的,假如你的Form在Dll中,而这个Dll被人调用了,预先的一些条件判断都无效了。
      

  9.   

    其实在新版本.net load中是可以close的比如我现在使用2008版本this.Close();就可以在load中关闭窗口以前使用的2003版本似乎真的不能。
    我以前的解决方案是不在load中写此类判断,而是写在Activated事件中,肯定必然没问题
      

  10.   

    VS2008下好像也有存在不行的时刻,有可能是Form中的控件太多的情况下会导致出错。
      

  11.   

    this.Close() 或 this.Dispose()时 都会出错:
    "执行 CreateHandle() 时无法调用值 Dispose()"
    "执行 CreateHandle() 时无法调用值 Close()"因为在OnLoad事件中,当前窗体的句柄Handle还没有创建完成
    所以不能直接进行关闭操作,变通的实现方法如下:protected override void OnVisibleChanged(EventArgs e)
    {
        base.OnVisibleChanged(e);
        if (条件)
            this.Close();
    }
    也可以重写 OnShown 或者在 Shown 事件响应中写。