C# 很多時候需要用到panel 面板來處理同一窗體,切換界面的問題
1.tabControl
- 優(yōu)勢: 即便在VS的設計面板內(nèi)也可以很好處理
- 缺點:
- 1.控件名容易重復或太長,比如將登陸叶雹、注冊原在、重置密碼做在同一個tabControl的3個page中時那先,都要填用戶名密碼,所以即便控件基本一摸一樣抄腔,你也要每個Page創(chuàng)建一次,并且在命名上要給予區(qū)分理张,txtLoginUsername赫蛇,txtRegisterUsername ...
當然如果你的應用場景每個Page的控件都基本不同,這條缺點也可以忽略 - 2.整個tabControl綁定的方法都會在這個Form窗體中雾叭,代碼量增加悟耘。
- 3.惡心的標簽頭和邊框,標簽頭最小可以設置寬高為1织狐, 即便你設置border = none 也能看到個外邊框作煌。
解決方法有這三種:- a.找東西擋住
- b.重寫控件
- c.先用一個panel容器,再將tabControl放在這個panel里面赚瘦,然后設置這個tabControl的位置和大小粟誓,讓他大于整個panel,直到標簽頭和邊框看不見起意。因為這個tabControl是這個panel內(nèi)的控件鹰服,所以超出部分他是不會顯示的。
- 1.控件名容易重復或太長,比如將登陸叶雹、注冊原在、重置密碼做在同一個tabControl的3個page中時那先,都要填用戶名密碼,所以即便控件基本一摸一樣抄腔,你也要每個Page創(chuàng)建一次,并且在命名上要給予區(qū)分理张,txtLoginUsername赫蛇,txtRegisterUsername ...
2.panel
如果直接多個panel疊上去,平時修改維護的時候要怎么做呢悲酷?
摳腳做法:拉大界面套菜,然后每個panel拉開再改
正確的做法應該是:打開視圖-其他窗口-文本大綱,然后將3個panel放在同一層设易,想顯示的那個拖至第一個即可
但是同樣會有tabControl缺點1的問題逗柴。
3.自定義panel控件
最好的方法是,創(chuàng)建一個自定義Panel控件顿肺,因為他的方法代碼也可以分離在那個控件中戏溺,不用全寫在Form窗體中了
注意:
- 1.如果你的winform是選擇的框架是大于.net 4.6 并且支持高DPI的,那么自定義控件的AutoScaleMode選擇DPI屠尊,font要和你放置的Form窗體一致旷祸,不然可能導致這個自定義Panel創(chuàng)建在你的Form窗體上時不一樣。
- 2.維護修改時讼昆,建議打開 視圖-其他窗口-文檔大綱托享,然后將3個panel放在同一層,想顯示的那個拖至第一個浸赫,方便維護
- 3.維護修改的時候闰围,在自定義控件中改了后,要重新生成一下解決方案既峡,才會在Form窗體的設計面板中顯示出來辫诅。
- 4.多個Panel中將想顯示的面板放到最前面,通過panel控件的BringToFront()方法涧狮。還有個將控件放最后的方法 SendToBack() 炕矮,但這個用的比較少
- 5.如果想在panel中調(diào)用父窗體的方法,((FrmFather)this.ParentForm).FatherMethodYouNeed();