[C#]關閉Form的盲點

摘要:[C#]關閉Form的盲點

剛剛要寫一個執行某些動作後,自動關閉的視窗程式,會出現 "無法存取已處置的物件"

程式碼如下:

 

public partial class Form1:Form
{
  public Form1()
  {
    InitializeComponent();
     //這裡加上我要執行的function
      doSomething();
     //做完就關閉
       this.Close();
   }

}

看起來很完美,但是其實大有問題...原因是,在建構式中,還沒建構完成就執行了Close(); 很明顯就不合理...

 
 

所以換個方法來達成相同結果,程式碼如下

public partial class Form1:Form
{
  public Form1()
  {
    InitializeComponent();
     //這裡加上我要執行的function
      doSomething();
     //這裡不要關閉了..
     //  this.Close();
   }
//多一個事件
private void Form1_Shown(object sender,EventArgs e)
{
  //等建構式完成,視窗要顯示的時候再關閉..
   this.Close();
}

}

當然也可以設定一個flag,如果在建構式讀取資料失敗就關閉視窗,如果讀取成功就顯示視窗,也是可以的!