.net Tabcontrol:如何删除tabpage标题?

.net Tabcontrol:如何删除tabpage标题?,.net,winforms,tabcontrol,.net,Winforms,Tabcontrol,我有一个选项卡控件,用于在应用程序中显示多个图像文件。我想在只显示一个tabpage时删除tabpage标题,这样我就可以将该屏幕空间用于图像。(这类似于在Firefox中取消选择“始终显示选项卡栏”。) 这可能与tabcontrol有关吗?或者,当只有一个文件(选项卡)打开时,我最好使用面板控件?我想不起隐藏选项卡标签的任何方法。我的建议是: 将选项卡内容放在面板中。当只有一个选项卡时,移动面板put以替换选项卡控件或类似的属性。是的,这是可能的。向项目中添加一个新类并粘贴如下所示的代码。编译

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


这可能与tabcontrol有关吗?或者,当只有一个文件(选项卡)打开时,我最好使用面板控件?

我想不起隐藏选项卡标签的任何方法。我的建议是:


将选项卡内容放在面板中。当只有一个选项卡时,移动面板put以替换选项卡控件或类似的属性。

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

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);
  }
}

试着使用这里给出的答案:)。。设置选项卡的区域


如果不调用checkOnePage,这似乎可以正常工作。有什么理由让我留着它吗?是的。这确保了它在运行时添加或删除选项卡页面时能够正常工作。我认为这就是它的作用,但没有它,它在运行时正常工作。现在,每次添加或删除选项卡页时,可能都会重新创建句柄。(vb.net 2008)你说得对。每次对控制装置进行喷漆时,似乎都会发送TCM_ADJUSTRECT。添加/删除页面将导致绘制事件。