2012-02-28 10 views
7

Tengo un control de tabulación en mi aplicación. Tengo un cuadro de lista que contiene la línea no de error y el nombre de archivo y la ruta del archivo. Al hacer doble clic, quiero agregar la nueva pestaña. El título del tabulador debe ser el nombre del archivo del cuadro de lista. Si la tabulación con el nombre del archivo en particular ya existe, entonces no debe abrir un nuevo tabulador, el cursor debe apuntar a esa página. Cómo recuperar el nombre de los tabuladores.Búsqueda de un tabulado en la pestaña control C#

private void lstErrorList_MouseDoubleClick(object sender, MouseEventArgs e) 
     { 
      ArrayList errorType = new ArrayList(); 
      if (lstErrorList.Items.Count > 0) 
      { 
       string error = lstErrorList.SelectedItem.ToString(); 



       { 

        int result = error.LastIndexOf('\\'); 
        string filename = error.Substring(result + 1, error.Length - (result + 1)); 
        int pagecount; 
        TabPage tp = new TabPage(); 
        pagecount = this.tabControl1.TabPages.Count; 
        for(int tbpagecount=0;tbpagecount<pagecount;tbpagecount++) 
        { 
         pagelist.Add(this.tabControl1.TabPages.ToString()); 
        } 
        if (pagelist.Contains(filename)) 
        { 


        } 
        else 
        { 
         this.tabControl1.TabPages.Insert(pagecount, filename); 
         pagecount++; 
        } 

        if (fileNamesList.Count == 0) 
         fileNamesList.Add(filename); 
        else 
        { 
         if (fileNamesList.Contains(filename)) 
         { 
          //fileNamesList.Add(""); 
         } 
         else 
         { 
          fileNamesList.Add(filename); 

         } 

        } 
       } 

Respuesta

9
 bool found = false; 
     foreach (TabPage tab in tabControl1.TabPages) { 
      if (filename.Equals(tab.Name)) { 
       tabControl1.SelectedTab = tab; 
       found = true; 
      } 
     } 
     if(! found) 
       tabControl1.TabPages.Add(filename,filename); 
+0

Funcionó bien. :) –

+0

para obtener más velocidad, agregue un "salto" debajo de la línea "found = true;". Para este ejemplo, no es muy neccasario, pero "Un poco hace un moco". :-) – Biber

2

¿Qué tal algo así?

 string fileName = ""; 
     bool isPresent = false; 

     for (int i = 0; i < tabControl1.TabPages.Count; i++) 
     { 
      if (tabControl1.TabPages[i].Name == filename) 
      { 
       isPresent = true; 
       break; 
      } 
     } 

     if (isPresent) 
     { 
       tabControl1.TabPages.Add(filename); 
     } 
     else 
     { 
       tabControl1.SelectTab(tab.TabIndex); 
     } 
+1

Esto siempre añadirá una nueva pestaña si el primero no es el que tiene el nombre de archivo dado y la modificación de una colección al enumerar el resultado será una excepción. – ChrisWue

+0

Woops, actualizado. – Jason

6
 var tabPage = tabControl1.TabPages[filename]; 
     if (tabPage != null) 
     { 
      tabControl1.SelectedTab = tabPage; 
     } 
     else 
     { 
      tabControl1.TabPages.Add(filename, filename); 
     } 
+1

En general, es más útil escribir un prefijo con una explicación sobre lo que hace y por qué funciona. –

+1

No se preocupe @Edy, solo usted y yo sabemos que esta es una mejor respuesta;) LOL – burntblark

+0

@burntblark: y yo, por supuesto ... – Joshi

Cuestiones relacionadas