1
風雲作者: 我正在寫一個程序,用戶點擊一個按鈕在TabControl中創建標籤。用戶已創建了5個選項卡,然後希望刪除選項卡3.這會留下選項卡1,2,4和5.如何在刪除選項卡後以編程方式重新排列tabcontrol中的選項卡?
如何重新排列選項卡以填補空白(選項卡4變爲新的選項卡3,標籤5變成標籤4等)? TabControl有一個內置函數嗎?
風雲作者: 我正在寫一個程序,用戶點擊一個按鈕在TabControl中創建標籤。用戶已創建了5個選項卡,然後希望刪除選項卡3.這會留下選項卡1,2,4和5.如何在刪除選項卡後以編程方式重新排列tabcontrol中的選項卡?
如何重新排列選項卡以填補空白(選項卡4變爲新的選項卡3,標籤5變成標籤4等)? TabControl有一個內置函數嗎?
參考臨客:MSDN Add And Remove Tab From Tabcontrol
// Removes the selected tab:
tabControl1.TabPages.Remove(tabControl1.SelectedTab);
// Removes all the tabs:
tabControl1.TabPages.Clear();
,如果你想通過指數
tabControl1.TabPages.RemoveAt(i);
使用標籤頁數組,它是所有的TabPages的集合中刪除選項卡,通過TabControl.SelecetedIndex在TabPage的陣列搜索,找到刪除後TabPage的索引,然後你可以做任何事情,這意味着你只需從TabControl中刪除Tabpage,而不是從TabPage數組,當需要其中一個在TabControl中搜索時,可以通過設置Tag將Selected Tabpage與Tabpage數組關聯起來屬性到數組的實數索引。 使用這2個功能:
TabPage[] tabPages;
private void MyForm_Load(object sender, EventArgs e)
{
tabPages = new TabPage[tabServices.TabPages.Count];
for (int i = 0; i < tabServices.TabPages.Count; i++)
{
tabServices.TabPages[i].Tag=i;//for relation between TabControl and Array
tabPages[i] = tabServices.TabPages[i];
}
}
private int GetTabIndex(TabPage pg)
{
return int.Parse(tabServices.TabPages[tabServices.SelectedIndex].Tag.ToString());
}
private TABPAGE GetTABPAGE(TabPage pg)
{
return (TABPAGE)int.Parse(tabServices.TabPages[tabServices.SelectedIndex].Tag.ToString());
}
private void tabServices_SelectedIndexChanged(object sender, EventArgs e)
{
switch (GetTABPAGE(tabServices.TabPages[tabServices.SelectedIndex]))
{
case TABPAGE.TabP1:
//Do Works;
break;
case TABPAGE.TabP2:
//Do Works;
break;
case TABPAGE.TabP3:
//Do Works;
break;
case TABPAGE.TabP4:
//Do Works;
break;
}
}
,並定義枚舉了所有的TabPages(用於可讀性和索引標籤頁的名稱):
public enum TABPAGE { TabP1 = 0, TabP2 = 1, TabP3 = 2};
謝謝,mojtaba,但我真正需要的是一種方法,一旦標籤已被刪除,重新排序標籤。刪除標籤後,其餘標籤必須重新編號以消除間隙。如果我有5個選項卡,並刪除Tab 3,我想重新排列其餘選項卡,以便它們被編號爲Tab 1,Tab 2,Tab 3和Tab 4.換句話說,Tab 4變成了Tab 3,Tab 5變成Tab 4等 – user2272380 2013-04-21 19:13:01
Tabcontrol數組索引改變後自動移除Tab,你的意思是什麼? – mojtaba 2013-04-22 17:40:37
mojtaba,你最接近理解我在說什麼。如果選項卡控件的數組索引自動更改,我如何重命名選項卡以反映此? – user2272380 2013-05-29 22:27:11