2012-03-11 27 views
0

私のアプリケーションにはタブフォームがあり、いつでも複数のフォームを開くことができますが、タブが開いているときはいつでも選択したタブが変わります。ついに開かれたタブにこだわりました。私のコードはこちらです。選択したフォームの変更でタブを選択しない

private void Form1_MdiChildActivate(object sender, EventArgs e) 
    { 
     if (this.ActiveMdiChild == null) 
      tabForms.Visible = false; 
     // If no any child form, hide tabControl 
     else 
     { 
      this.ActiveMdiChild.WindowState = FormWindowState.Maximized; 
      // Child form always maximized 

      // If child form is new and no has tabPage, 
      // create new tabPage 
      if (this.ActiveMdiChild.Tag == null) 
      { 
       // Add a tabPage to tabControl with child 
       // form caption 

       TabPage tp = new TabPage(this.ActiveMdiChild.Text); 
       tp.Tag = this.ActiveMdiChild; 
       tp.Parent = tabForms; 
       tabForms.SelectedTab = tp; 


       SwapTabPages(tp); 

       this.ActiveMdiChild.Tag = tp; 
       this.ActiveMdiChild.FormClosed += new FormClosedEventHandler(ActiveMdiChild_FormClosed); 
      } 

      if (!tabForms.Visible) tabForms.Visible = true; 

     } 
    } 


private void ActiveMdiChild_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     //Destroy the corresponding Tabpage when closing MDI child form 
     if (tabForms.HasChildren) 
     { 
      ((sender as Form).Tag as TabPage).Dispose(); 
     }    
     //If no Tabpage left 
     else if (!tabForms.HasChildren) 
     { 
      tabForms.Visible = false;     
     }    
    } 

    private void tabForms_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if ((tabForms.SelectedTab != null) && (tabForms.SelectedTab.Tag != null)) 
      (tabForms.SelectedTab.Tag as Form).Select();    
    } 
+1

を得ました。これはちょっとばかりの長いランナウアウト文です。 – abelenky

答えて

0

私は、これは問題ではない答え

else 
       { 

        for (int i = 0; i < tabForms.TabCount; i++) 
         { 
          if (tabForms.TabPages[i].Text == this.ActiveMdiChild.Text.ToString()) 
           { 
            tabForms.SelectedTab = tabForms.TabPages[i]; 
              break; 
           } 
         } 
       }     
       if (!tabForms.Visible) tabForms.Visible = true; 
関連する問題