2012-02-28 85 views
7

我在我的应用程序中有一个tabcontrol。我有一个列表框,其中包含错误的行号和文件名以及文件的路径。双击我想添加新的标签页。标签页的标题应该是列表框中文件的名称。如果具有特定文件名的页面页已经存在,那么它不应该打开新的页面页,光标应该指向那个页面。如何检索标签页的名称。在tabcontrol中搜索tabpage 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

它工作正常。 :) – 2012-02-28 07:39:55

+0

更快的速度,在“found = true;”一行下添加一个“break”。对于这个例子来说,它并不是十分必要的,但是“许多有点让人浮想联翩”。 :-) – Biber 2017-01-11 14:27:40

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 2012-02-28 07:10:43

+0

Woops,已更新。 – Jason 2012-02-28 07:13:41

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

在代码前加一个解释,说明它的功能以及它为什么起作用通常更有帮助。 – 2015-08-04 02:58:39

+1

不要担心@Edy,只有你和我知道这是一个更好的答案;)LOL – burntblark 2015-08-14 07:54:00

+0

@burntblark:和我当然... – Joshi 2016-07-28 09:26:47