2012-02-28 17 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;"という行の下に "break"を追加してください。この例では、それは非常に必死ではありませんが、「少し多くはミルクを作ります」。 :-) – 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

最初のものは与えられたファイル名で1、それは例外が発生します列挙中に、コレクションを変更しない場合、これは常に新しいタブページを追加します。 – ChrisWue

+0

更新されました。 – Jason

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

一般的に、コードには、そのコードが何をしているのか、なぜそれが機能するのかについての説明が付いています。 –

+1

@Edyを心配しないでください、あなたと私だけがこれが良い答えだと分かっています;)LOL – burntblark

+0

@ burnntblark:もちろん私も... – Joshi

関連する問題