c# - TabPageCollection.RemoveByKey index 0 out of range -


so i've got weird issue. i'm developing chat application using jabber framework. i'm trying remove tabpage tabcontrol (removing chat tab chat window). each tabpage keyed string of user's jid (user@server.com). whenever try remove tabpage key, argumentoutofrangeexception. below code have explicitly removing chat tab. have function listens closing event of form itself, removes first (and only) control each tabpage before allowing form close.

the weird part code works fine when chat form hasn't been closed. each chat tab can explicitly removed using function. problem arises when go remove tab after form has been closed , reopened (with current-open chats being re-added in own tabs).

some key things know:

  • i can retrieve index of tabpage want close through chattabs.tabpages.indexofkey(...)
  • i can retrieve tabpage object through chattabs.tabpages[...] using index value indexofkey(...)
  • when try remove page passing value chattabs.tabpages[...] chattabs.tabpages.remove(...), nothing happens
  • when try close form in catch block, nothing happens, , form stays open

clearly weird issue, , i've run out of ways debug it. ideas so?

removechat(...) function:

private void removechat(jid userjid) {     if (chattabs.tabpages.containskey(userjid.bare))     {         try         {             // remove chat tab             if (chattabs.tabpages[userjid.bare].controls.count > 0)             {                 chattabs.tabpages[userjid.bare].controls.removeat(0);             }             chattabs.tabpages.removebykey(userjid.bare);         }         catch (exception ex)         {             log.error(ex.message + "\r\n" + ex.stacktrace);             this.close(); return;         }          // select first available chat tab         if (chattabs.tabcount > 0)         {             chattabs.selectedindex = 0;         }         // close chat window         else         {             this.close();         }     } } 

form closing listener/handler function:

private void chatform_formclosing(object sender, formclosingeventargs e) {     // remove each chat control not disposed     foreach (tabpage tab in chattabs.tabpages)     {         tab.controls.removeat(0);     } } 

error removebykey(...):

2013-03-01 12:39:42,963: error <10> [chatform] - index 0 out of range. parameter name: index    @ system.windows.forms.control.controlcollection.get_item(int32 index)    @ system.windows.forms.tabcontrol.tabpagecollection.removebykey(string key)    @ <...>.chatform.removechat(jid userjid) in c:\work\[...]\chatform.cs:line 87 

where line 87 call removebykey(...)


Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -