none
Posicionar duas tabControl em um form RRS feed

  • Pergunta

  • Olá.

    Estou tendo um problema com tabControl usando windows forms, em minha aplicação eu possuo duas tabcontrols sendo que uma sempre existirá(na imagem o com novo projeto) na tela e a outra ficará invisivel(na imagem com tabpage 3) e só aparecerá ao clicar em um botão ficando posicionada a esquerda do outro tabcontrol.

    o problema é que quando eu maximizo a tela o meu primeiro tabcontrol fica afastado do outro, acredito eu por causa da forma como foi setado para ser desenhado, preciso que o meu form preencha a area que ficou vazia.

    Alguém tem alguma ideia do que posso fazer?

    quinta-feira, 24 de setembro de 2015 11:12

Respostas

  • Olá, Marcelo!

       Defina a propriedade Anchor do seu primeiro TabControl como "Top, Bottom, Left, Right", e a propriedade Dock do seu segundo TabControl como "Left".

    Bom trabalho!


    • Editado Rodrigo CdS quinta-feira, 24 de setembro de 2015 11:28
    • Marcado como Resposta MarceloAugustoF quinta-feira, 24 de setembro de 2015 19:36
    quinta-feira, 24 de setembro de 2015 11:28
  • Acho que a melhor solução então é esta:

    1. Adicione um TableLayoutPanel, e remova a última linha, deixando-o com apenas uma linha e duas colunas;
    2. Defina a propriedade Dock do TableLayoutPanel como "Fill";
    3. Selecione a propriedade Columns do TableLayoutPanel, e defina a Column1 como AutoSize, e a Column2 como Percent = 100%;
    4. Na Column1, inclua o TabControl que deve aparecer e desaparecer, e defina a propriedade Dock como "Fill";
    5. Na Column2, inclua a outra TabControl, e defina a propriedade Dock como "Fill";
    6. No evento do botão, você pode apenas inserir este código:

    //Considerando que o tabControl2 seja o que deve aparecer e desaparecer
    this.tabControl2.Visible = !this.tabControl2.Visible;
    
    

    Fiz um rápido teste aqui, e funcionou perfeitamente. Espero que te ajude aí.



    • Editado Rodrigo CdS quinta-feira, 24 de setembro de 2015 19:08
    • Marcado como Resposta MarceloAugustoF quinta-feira, 24 de setembro de 2015 19:36
    quinta-feira, 24 de setembro de 2015 19:06

Todas as Respostas

  • Olá, Marcelo!

       Defina a propriedade Anchor do seu primeiro TabControl como "Top, Bottom, Left, Right", e a propriedade Dock do seu segundo TabControl como "Left".

    Bom trabalho!


    • Editado Rodrigo CdS quinta-feira, 24 de setembro de 2015 11:28
    • Marcado como Resposta MarceloAugustoF quinta-feira, 24 de setembro de 2015 19:36
    quinta-feira, 24 de setembro de 2015 11:28
  • Ola Rodrigo.

    Desculpe a demora para responder, fiz o que vc disse, mas não sei o motivo a tabcontrol do novo projeto ficou menor e não preencheu o restante da tela, a propriedade Dock desta tabcontrol estava definida como Fill e nessa parte do código eu a defini como None. será que precisa setar mais alguma coisa?

    quinta-feira, 24 de setembro de 2015 16:08
  • Quando você define as âncoras do controle como "Top, Bottom, Left, Right", só precisa ajustar o tamanho inicial deste na tela, pois depois, conforme a tela expandir o controle o acompanhará, já que está ancorado. Já verificou se a TabControl não perdeu a configuração das âncoras? Segue uma imagem da configuração das âncoras:

    Configuração das âncoras

    quinta-feira, 24 de setembro de 2015 16:27
  • Certo entendi, então não utilizo o Dock com Fill uso somente a propriedade Anchor.

    Mas ainda tenho um problema, quando a ultima tabControl não estiver visível a outra tabControl deve assumir toda a área da tela então como eu deveria definir a posição inicial das tabcontrols sendo que só a tabcontrol do novo projeto que poderá em algum instante estar sozinha em toda a area?

    quinta-feira, 24 de setembro de 2015 18:17
  • Acho que a melhor solução então é esta:

    1. Adicione um TableLayoutPanel, e remova a última linha, deixando-o com apenas uma linha e duas colunas;
    2. Defina a propriedade Dock do TableLayoutPanel como "Fill";
    3. Selecione a propriedade Columns do TableLayoutPanel, e defina a Column1 como AutoSize, e a Column2 como Percent = 100%;
    4. Na Column1, inclua o TabControl que deve aparecer e desaparecer, e defina a propriedade Dock como "Fill";
    5. Na Column2, inclua a outra TabControl, e defina a propriedade Dock como "Fill";
    6. No evento do botão, você pode apenas inserir este código:

    //Considerando que o tabControl2 seja o que deve aparecer e desaparecer
    this.tabControl2.Visible = !this.tabControl2.Visible;
    
    

    Fiz um rápido teste aqui, e funcionou perfeitamente. Espero que te ajude aí.



    • Editado Rodrigo CdS quinta-feira, 24 de setembro de 2015 19:08
    • Marcado como Resposta MarceloAugustoF quinta-feira, 24 de setembro de 2015 19:36
    quinta-feira, 24 de setembro de 2015 19:06
  • Obrigado Rodrigo pela ajuda!
    quinta-feira, 24 de setembro de 2015 19:37