Pergunta

Eu tenho um tabcontrol usado para exibir vários arquivos de imagem em um aplicativo. Eu gostaria de remover o título TabPage quando há apenas um TabPage exibido, para que eu possa usar esse espaço de tela para a imagem. (Isto é semelhante ao desmarcando "Sempre mostrar a barra de abas" no Firefox.)

Isto é possível fazer com o tabcontrol? Ou estou melhor fora de usar um painel de controle quando apenas um arquivo (guia) é aberta?

Foi útil?

Solução

Sim, isso é possível. Adicione uma nova classe ao seu projeto e cole o código mostrado abaixo. Compilar. Largar o novo controle a partir do topo da caixa de ferramentas para seu formulário.

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

Outras dicas

tente usar a resposta dada aqui :) .. configurar a região do separador

Edifício C # .NET aplicativo do Windows com múltiplas visões

Não me lembro de qualquer meio para esconder o rótulo guia. Minha recomendação:

Tenha os seus conteúdos de tabulação em painéis. Quando apenas um guia, mova o put painel para substituir o tabcontrol ou algo dessa natureza.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top