代码之家  ›  专栏  ›  技术社区  ›  xpda

Tabcontrol:如何删除tabpage标题?

  •  2
  • xpda  · 技术社区  · 15 年前

    我有一个选项卡控件,用于在应用程序中显示多个图像文件。我想在只显示一个tabpage时删除tabpage标题,这样我就可以将该屏幕空间用于图像。(这类似于在Firefox中取消选择“始终显示选项卡栏”。)

    3 回复  |  直到 15 年前
        1
  •  6
  •   Hans Passant    15 年前

    是的,这是可能的。向项目中添加一个新类并粘贴如下所示的代码。编译。将新控件从工具箱顶部拖到窗体上。

    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);
      }
    }
    
        3
  •  0
  •   o.k.w    15 年前

    我不记得有任何方法隐藏标签。我的建议是: