2009-12-01 87 views
2

我有一個tabcontrol用於在應用程序中顯示多個圖像文件。當只有一個tabpage顯示時,我想刪除tabpage標題,所以我可以使用該屏幕空間來顯示圖像。 (這與在Firefox中取消選擇「始終顯示標籤欄」類似。)Tabcontrol:如何刪除標題頁標題?

這是可以使用tabcontrol嗎?或者,當我只打開一個文件(選項卡)時,我最好使用面板控件?

回答

6

是的,這是可能的。爲您的項目添加一個新類並粘貼下面顯示的代碼。編譯。將新的控件從工具箱的頂部拖放到表單上。

using System; 
using System.Windows.Forms; 

public class MyTabControl : TabControl { 
    private int mPages = 0; 
    private void checkOnePage() { 
    if (IsHandleCreated) { 
     int pages = mPages; 
     mPages = this.TabCount; 
     if ((pages == 1 && mPages > 1) || (pages > 1 && mPages == 1)) 
     this.RecreateHandle(); 
    } 
    } 
    protected override void OnControlAdded(ControlEventArgs e) { 
    base.OnControlAdded(e); 
    checkOnePage(); 
    } 
    protected override void OnControlRemoved(ControlEventArgs e) { 
    base.OnControlRemoved(e); 
    checkOnePage(); 
    } 
    protected override void WndProc(ref Message m) { 
    // Hide tabs by trapping the TCM_ADJUSTRECT message 
    if (m.Msg == 0x1328 && !DesignMode && this.TabCount == 1) m.Result = (IntPtr)1; 
    else base.WndProc(ref m); 
    } 
} 
+0

它工作的區域! (即使在vb。) – xpda 2009-12-01 06:41:28

+0

好的那裏! +1 – 2009-12-01 08:16:53

+0

這似乎沒有調用checkOnePage正常工作。我應該保留這個原因嗎? – xpda 2009-12-01 17:57:11

0

我不記得隱藏標籤標籤的任何方法。我的推薦:

讓面板中的標籤內容。當只有一個選項卡時,移動面板放置以替換tabcontrol或某種特性。