2017-05-16 6 views
0

だから私は動的にいくつかを追加し、削除する必要がありますTabPage。ユーザーが[Show Tab] = storage_pageをクリックしました。TabControlからタブページを削除する

彼は別のページを選択したときに storage_page iが「表示タブ」ページをクリックすると

private void main_tabControl_SelectedIndexChanged(object sender, EventArgs e) { 
    for (int i = 0; i < main_tabControl.TabPages.Count; i++) { 
     if (main_tabControl.TabPages[i].Name.Equals("storage", StringComparison.OrdinalIgnoreCase) && main_tabControl.SelectedTab.Name != "Storage") { 
      main_tabControl.TabPages.RemoveAt(i); 
      break; 
     } 
    } 
} 

を除去しなければならない

private void storage_menuItem_Click(object sender, EventArgs e) { 
    storage_page.Text = storage_page.Name = "Storage"; 
    main_tabControl.TabPages.Add(storage_page); 
    main_tabControl.SelectedTab = storage_page; 
} 

と表示されます。しかし、私が他のページを選択すると、私はを参照してApplication.Run(new Form_Authentication());につながっています。

どうすればいいですか?

答えて

0

私は私はあなたが第七要素を削除している場合main_tabControl.TabPages.Count = 10、何をhappendedされていると問題は、あなたがmain_tabControl.TabPages.Count

に0から1による変数iを増加させていると思いますか?そのとき、main_tabControl.TabPages.Count = 4とi変数= 6です。したがって、変数はTabPagesの範囲を超えています。

private void main_tabControl_SelectedIndexChanged(object sender, EventArgs e) { 
    for (int i = main_tabControl.TabPages.Count - 1; i >=0 ; i--) { 
     if (main_tabControl.TabPages[i].Name.Equals("storage", StringComparison.OrdinalIgnoreCase) && main_tabControl.SelectedTab.Name != "Storage") { 
      main_tabControl.TabPages[i].Dispose(); 
      break; 
     } 
    } 
} 

あなたはあなたのコードを変更するべきです

関連する問題