2017-05-16 76 views
0

그래서 나는 TabPage을 동적으로 추가하고 삭제해야합니다. 사용자가 "탭 표시"= storage_page을 추가했습니다.TabControl에서 TabPage를 제거하십시오

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; 
} 

그리고 그가 storage_page 내가 클릭하면

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; 
     } 
    } 
} 

을 제거 할 수있는 다른 페이지를 선택할 때 "연락처보기 탭"페이지가 표시됩니다. 하지만 내가 다른 페이지를 선택할 때 이 Application.Run(new Form_Authentication()); 라인으로 이어집니다.

어떻게 할 수 있습니까?

답변

0

나는 당신이 일곱 번째 요소를 제거하는 경우 main_tabControl.TabPages.Count = 10, 무슨 안나오는한다고 가정 문제가 당신이 main_tabControl.TabPages.Count

0에서 1로 내가 변수를 증가 생각? 그때, main_tabControl.TabPages.Count = 4 및 i variable = 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; 
     } 
    } 
} 
:

당신은 당신의 코드를 변경해야