2012-02-28 2 views
7

У меня есть tabcontrol в моем приложении. У меня есть список, который содержит строку ошибки и имя файла и путь к файлу. Дважды щелкните Я хочу добавить новую вкладку. Заглавие закладки должно быть именем файла из списка. Если закладка с указанным именем уже существует, она не должна открывать новую вкладку, которую должен указывать курсор на эту страницу. Как получить имя табуляции.Поиск закладки в tabcontrol 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); 

         } 

        } 
       } 

ответ

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

Все нормально. :) –

+0

для большей скорости, добавьте «разрыв» под строку «found = true;». Для этого примера это не очень непроглядно, но «Многие мало что делают. :-) – Biber

2

Как насчет этого?

 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

Это всегда будет добавить новую закладку, если первый не один с указанным именем файла и модифицирующих коллекцию при перечислении это приведет к исключению. – ChrisWue

+0

Woops, обновлено. – Jason

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

Как правило, полезно использовать префикс кода для объяснения того, что он делает и почему он работает. –

+1

Не волнуйся @ Эй, только ты и я знаем, что это лучший ответ;) LOL – burntblark

+0

@burntblark: и мне конечно ... – Joshi

Смежные вопросы