tabControl控件與tabPage選項卡顯示/隱藏——c#


tabPage選項卡在tabControl控件容器里面,而tabControl是一個類,tabPage也是一個類,使用tabControl1.tabPage1是錯誤的,他們的關聯通過集合TabPages來綁定,相當與tabControl控件提供了容器給tabPage控件

 

在窗體中直接引用tabControl的對象tabControl(假如tabControl下有五個選項卡分別為tabPage1,tabPage2,tabPage3,tabPage4,tabPage5)

這五個選項卡都存在tabControl的TabPages屬性中

如果需要刪除選項卡tabPage3,則直接調用remove方法

 如果有很多個選項卡,只想保留某一個,可以一個個刪除肯定太麻煩

使用如你所想,使用遍歷的方法(這里計算選項卡個數使用集合的count方法)

上來就是

 

 結果肯定是不盡人意,和想的不一樣,也有可能是報錯

后面經過調試發現tabControl1.TabPages.Count永遠是取當前集合中的元素個數,也就是說tabControl1.TabPages.Count的值一直在變,每執行一次循環,就去掉了一個值,也就是-1

我們使用一個變值作為判斷條件,在這里肯定不是我們想要的,於是我們把它存到一個變量里,就有以下

 

 但是運行還是出差,報錯大概意思是集合中沒有那么多值去索引,再調試發現還是那個集合的邏輯沒弄好

就如上面所言tabControl1.TabPages.Count的值一直在變,每執行一次循環,就去掉了一個值,也就是-1

而我們的索引值一直在累加,所以當i = 3,時,這時tabControl1.TabPages.Count里只有兩個值了,所以索引tabControl1.TabPages[3]時報錯

於是改成下面這樣

 

 我們永遠都只刪除當時的第一個值,因為索引從0開始,所以上面表示刪除第一個選項卡以外的所有選項卡。

但如果只保留第三個選項卡怎么辦

 

 加了一個判斷,運行第三遍的時候不刪除,但是結果還是不對,只保留了最后一個

還是那個原因,我們只是讓第三遍循環不刪除而已,但是第四遍就把第三個選項卡刪除了,以此類推,只剩下最后一個了

所以要在第三遍之前,刪除第一個選項卡,第四遍之后,刪除第二個選項卡,第三遍不執行刪除。

 

 大功告成,最后可以封裝成一個方法,當滿足什么條件時,選擇保留指定的選項卡,比如登錄的是aa同學,aa同學選項卡是第十個,我們就傳個十進去,然后把十減一代替二,實現只保留第十個選項卡

 

 

在窗體中直接引用tabPage的對象tabPage1(假設tabPage1在tabControl1下)

還可以在tabPage里操作隱藏和顯示,據說這個方法萬能的,對其他控件也可以實現,可以自行去了解Parent的屬性

this.tabPage1.Parent = null;隱藏
this.tabPage1.Parent = this.tabControl1;顯示


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM