Èç¹û²»ÓÃMDIÀ´ÊµÏÖÒ»¸öÖ÷´°Ìå´ò¿ª¶à¸ö×Ó´°Ìåʱ£¬

´ÓÒ»¸ö´°Ì壨Ö÷´°Ì壩´ò¿ªÒ»¸ö£¨only one) ÁíÍâÒ»¸öµÄ´°Ì壨×Ó´°Ì壩µÄʵÏÖ

¸¸´°Ì壺MainForm

public partial class MainForm:Form

{

    ............

 

    private void menuItem1_Load(object sender,EventArgs e)    

     {

        ChildForm child1=ChildForm.Create();

        child1.show();

        child1.Focus();

     }

  

    //......

}

 

×Ó´°Ì壺ChildForm

 

public partial class ChildForm:Form

{

     .....

 

     static ChildForm child;

    

     Public static ChildForm Create()

      {

         if(child==null)

            child=new ChildForm();

          return Child;

      }

     ......

}

 

F5ÔËÐк󣬵ÄȷʵÏÖÁËÉÏÃæÌáµ½µÄ¹¦ÄÜ¡£È»¶ø£¬°Ñ×Ó´°Ì幨±Õºó£¬ÏëÔٴδò¿ª¸Ã×Ó´°Ìåʱ£¬µ¥»÷²Ëµ¥Ï»á³öÏÖÒì³££ºObjectDisposedException was unhandled.

 

    ÕâÊÇÎªÊ²Ã´ÄØ£¿?

 

ÕâÀïÉæ¼°µ½C#À¬»ø»ØÊÕµÄÎÊÌ⣺

 

À¬»ø»ØÊÕÊÇ.NETÔËÐпâµÄÒ»²¿·Ö¡£À¬»ø»ØÊÕÆ÷¹ÜÀíËùÓеÄÍйܶÔÏó£¬ËùÓÐÐèÒªÍйÜÊý¾ÝµÄ.NETÓïÑÔ£¨°üÀ¨ C#£©¶¼ÊÜÔËÐпâµÄÀ¬»ø»ØÊÕÆ÷µÄÖÆÔ¼¡£À¬»ø»ØÊÕÆ÷¿ÉÒÔÈ·¶¨ÔËÐÐÀ¬»ø»ØÊÕµÄ×î¼Ñʱ¼ä£¬×Ô¶¯½øÐÐÀ¬»ø»ØÊÕ¡£È»¶øÀ¬»ø»ØÊÕµÄÒ»¸ö²úÎïÊÇ£ºC# ¶ÔÏóûÓÐÈ·¶¨ÐÔ»Ù»µ¡£ËùÒÔ»á³öÏÖ¶ÔÏóchildÒѱ»Ïú»Ù£¬µ«ÓÖ²»Îªnull,·ÃÎÊʱ²úÉúObjectDisposedExceptionÒì³£¡£

 

   Ôõô°ì£¿?

 

   ·½·¨£ºÓ¦¸Ã³¹µ×»ØÊÕChildËùÕ¼µÄ×ÊÔ´¡£

  ;¾¶Óжþ£º

·½·¨Ò»£º

ÐÞ¸Ä×Ó´°ÌåµÄ¹¹Ô캯Êý

public ChildForm()

{

      //.........

      this.Disposed+=new System.EventHandler(Form_Disposed)

}

È»ºóʼþForm_DisposedµÄ´¦Àíº¯Êý

private void Form_Disposed(object sender,EventArgs e)

{

      Child=null;

}

·½·¨¶þ£º

ÖØÐ´ChildFormµÄOnClosed·½·¨

Protected void OnClosed(EventArgs e)

{


      base.OnClosed(e); 
      child=null;

}

µ±È»¿ÉÄÜÓÐÆäËûµÄ·½·¨£¬¸÷λ¿´¿ÍÓÐÐËȤµÄ»°²¹³äһϡ£ÁíÍâÓÐÐðÊö²»µ±µÄµØ·½£¬Çë¶à¶àÖ¸½Ì,ÔÚÏ¸м¤²»¾¡¡£