Pergunta

O componente System.Windows.Forms.TabControl padrão desenha uma borda em torno das TabPages que ele contém. Se você definir seu Dock para Fill, essas fronteiras correr até a borda do controle pai, mas eles ainda estão lá, ocupando espaço na tela.

No Visual Studio, se você encaixar duas janelas no mesmo lugar, você tem um conjunto TabControl-like de guias ao longo da parte inferior, mas sem fronteiras ao longo dos lados.

É possível obter um TabControl para exibir suas TabPages desta maneira, sem espaço na tela desperdiçado nas laterais? Se possível, eu gostaria de evitar soluções que envolvem a pintura do controle mesmo.

Foi útil?

Solução

Usando o controle guia .NET padrão, este não é diretamente possível. Qual é o objetivo final para isso? Você está tentando simular o mesmo tipo de exibição estilo com abas-MDI como o Visual Studio? Se for esse o caso, existem várias soluções de terceiros disponíveis -. Alguma fonte aberta e alguns comercial

As outras respostas sobre como usar a propriedade Anchor em combinação com definição do tamanho por isso é apenas um pouco maior do que o trabalho real janela de poder, mas eu acho que pode parecer um pouco estranho visualmente. Ele deve funcionar independentemente das configurações de tema e de acessibilidade, mas você pode acabar tendo que programaticamente definir o tamanho a ser alguns pixels maior do que o pai.

Outras dicas

  1. Remova os atributos de altura e largura de TabControl
  2. definir o alinhamento horizontal e vertical para estiramento

por exemplo. não vai esticar;

<TabControl Height="373" Width="609" HorizontalAlignment="Stretch" Name="tabControl1" VerticalAlignment="Stretch"  VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">

por exemplo. vai esticar;

<TabControl HorizontalAlignment="Stretch" Name="tabControl1" VerticalAlignment="Stretch"  VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">

Em vez de usar a propriedade Dock você deve tentar usar a âncora para ancorar cada um dos quatro lados. Então você precisa posicionar o TabControl por isso está posicionado um par de pixels maiores em todos os lados que o pai. Dessa forma, as fronteiras estão escondidos, porque eles não podem ser tiradas quando por trás do controle pai.

<Grid>
   <TabControl Name="tabControl1" >
       <TabItem Header="tabItem1" Name="tabItem1">
          <Grid />
       </TabItem>
       <TabItem Header="tabItem2" Name="tabItem2">
          <Grid />
       </TabItem>
       <TabItem Header="tabItem3" Name="tabItem3">
          <Grid />
       </TabItem>
  </TabControl>
</Grid>

Anchor os lados esquerdo e direito do controle com o conjunto de largura para a largura do controle pai.

childControl.Anchor = Anchor.Left | Anchor.Right; childControl.Width = parentControl.Width;

Do not Encaixe a TabControl. Esticá-la sobre o designer de modo suas bordas esquerda e direita se estendem para além da janela.

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