可是 .NET 的控件真的很陽春 , tabControl 控件居然沒有 隱藏或關閉頁標籤 (TabPage Header) 的屬性 , 找了好久終於有 "山不轉路轉" 的替代方案 , 只要設定三個屬性 , 便可在 "視覺" 上達到好像看不到頁標籤的效果

只要改變 tabControl 的下面三個屬性 , 即可隱藏 TabPage Header (頁標籤)
private void button1_Click(object sender, System.EventArgs e)
{
tabControl1.SizeMode=TabSizeMode.Fixed;
tabControl1.Appearance= TabAppearance.FlatButtons;
tabControl1.ItemSize=new Size(0, 1);}
或是
private void Form1_Load(object sender, EventArgs e)
{
//不要看到 tabControl1 頁標籤的作法 :
//
//於開發環境下 , tabControl1.SizeMode 設成 "Fixed";
// tabControl1.ItemSize 設成 "1,1";
// tabControl1.Alignment 設成 "Bottom"
//並在 Runtime 時 , Form1_Load 加入以下
this.tabControl1.Region = new Region(new RectangleF(this.tabPage1.Left, this.tabPage1.Top, this.tabPage1.Width, this.tabPage1.Height));
//改變 tabControl 背景顏色
for (int i = 0; i < tabControl1.TabCount; i++)
tabControl1.TabPages[i].BackColor = System.Drawing.SystemColors.Control;
}
■ 範例參考
以下畫面中間 LCD 顯示區即為 tabControl , 共有四頁畫面 , 若帶著 頁標籤 (TabPage Header) , 畫面就很難看了




■ 其它網路文章參考 : c# 如何隱藏TabControl控制項的標籤
□ 方法一:將標籤縮小到機會看不到:設置頁面的大小模式會自動適合(會儘量佔有空間);將標籤(Item)的大小設置為最小(無寬度,高度為1)
TabControl.SizeMode = TabSizeMode.Fixed
TabControl.ItemSize = New Size(0, 1)
□ 方法二:將TabControl放入到Panel,將位置上移,用Panel遮擋住標籤
□ 方法三:在表單Load事件中添加:
this.tabControl1.Region = new Region(new RectangleF(this.tabPage1.Left, this.tabPage1.Top, this.tabPage1.Width, this.tabPage1.Height));
以上代碼完成標籤的隱藏,但還存在一個問題,就是Tab + Ctrl 可以切換TabControl中的頁,可以通過捕捉按鍵消息遮罩 組合鍵:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case (Keys.Tab | Keys.Control):
return true;
default:
break;
}
return base.ProcessCmdKey(ref msg, keyData);
}
以上兩步即可實現TabControl 標籤的隱藏,如果要效果理想,可以調整TabControl 的appearance屬性設置TabControl 的繪製方式。
没有评论:
发表评论