none
gerenciando tabcontrol RRS feed

  • Pergunta

  • Como eu faço pra usar o tabcontrol, windows forms C#, assim:

    serão várias tabpages, cada uma fará uma operação.

    criar classe pra cada tabpage(todos os controles ficam no form1...

    se tabpage selected => executar o código da tabpage correspondente

    porque eu estava fazendo tudo junto no form1.cs

    aí o form1.cs só gerencia, mas não sei como referenciar os controles qdo crio uma classe pro tabpageX.


    • Editado tracaja sexta-feira, 1 de dezembro de 2017 17:47
    sexta-feira, 1 de dezembro de 2017 16:34

Respostas

  • Você pode passar uma referência do Form ou dos controles diretamente para as classes. Segue exemplo:

    public class Form1
    {
    protected TextBox algumTextBox;
    
    public void botao1_Click(...)
    {
        var tabPage1 = new TabPage1(algumTextBox);
    }
    
    }
    
    
    public class TabPage1
    {
    private TextBox textBoxForm1;
    
    public TabPage1(TextBox parametro)
    {
    this.textBoxForm1 = parametro;
    // Alterando algum valor do textbox no Form1, a partir da classe TabPage1
    this.textBoxForm1.Text = "Alguma coisa";
    }
    }


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    • Marcado como Resposta tracaja sábado, 2 de dezembro de 2017 21:10
    sábado, 2 de dezembro de 2017 01:05
  • Saudações.

    Se você criar a classe TabePageX e precisa acessar esta classe.
    Sete esta classe como publica

    Assim:

    public class TabePageX()
    {
        // todo seu código aqui
    }

    Primeiro imagine que na classe tem algum método chamado "AtivaTab"

    Faça assim:

    //instanciando a classe 
    TabePageX nomeQualquer = new TabePageX();
    
    // acesse o método "AtivaTab" assim
    nomeQualquer.AtivaTab();
    Atenciosamente,
    ____________________________________
    Agnaldo Guimarães

    Se te ajudei, sinalize como "útil" e lembre-se de "marcar como resposta".
    Quando você marca como resposta os outros visitantes encontram a solução facilmente.

    ** Para que o mau prevaleça basta que os bons não façam nada....

    • Marcado como Resposta tracaja sábado, 2 de dezembro de 2017 21:10
    sábado, 2 de dezembro de 2017 02:37

Todas as Respostas

  • Boa tarde, tracaja.

    Tudo bem?

    Obrigado por usar o fórum MSDN.

    Poderia por favor explicar melhor o que você precisa?

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 1 de dezembro de 2017 18:42
    Moderador
  • eu estou aprendendo, então o exercício envolve boas práticas.

    estava fazendo o código dos tabpages todos seguidos no form1.cs.

    Quero separar os códigos de cada tabpage em classes.

    Tipo crio a classe tabpage2, e aí ponho o codigo do que será calculado na tabpage2.

    O problema é que daí não sei referenciar os controles, que estão no form1.

    por exemplo, do jeito que estou fazendo eu tenho o botão2 no tabpage2, mas todo código está no form1.cs.

    não sei fazer o código numa classe tabpage2 funcionar o botão dela, pq ele está no form1....

    Consegui explicar?

    quero criar classes separadas pra cada tabpage com os códigos, e os botões ficam todos no form1, assim cada tabpage terá sua classe com as funcionalidades.

    Ou isso é inviável?

    sábado, 2 de dezembro de 2017 00:48
  • Você pode passar uma referência do Form ou dos controles diretamente para as classes. Segue exemplo:

    public class Form1
    {
    protected TextBox algumTextBox;
    
    public void botao1_Click(...)
    {
        var tabPage1 = new TabPage1(algumTextBox);
    }
    
    }
    
    
    public class TabPage1
    {
    private TextBox textBoxForm1;
    
    public TabPage1(TextBox parametro)
    {
    this.textBoxForm1 = parametro;
    // Alterando algum valor do textbox no Form1, a partir da classe TabPage1
    this.textBoxForm1.Text = "Alguma coisa";
    }
    }


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    • Marcado como Resposta tracaja sábado, 2 de dezembro de 2017 21:10
    sábado, 2 de dezembro de 2017 01:05
  • Saudações.

    Se você criar a classe TabePageX e precisa acessar esta classe.
    Sete esta classe como publica

    Assim:

    public class TabePageX()
    {
        // todo seu código aqui
    }

    Primeiro imagine que na classe tem algum método chamado "AtivaTab"

    Faça assim:

    //instanciando a classe 
    TabePageX nomeQualquer = new TabePageX();
    
    // acesse o método "AtivaTab" assim
    nomeQualquer.AtivaTab();
    Atenciosamente,
    ____________________________________
    Agnaldo Guimarães

    Se te ajudei, sinalize como "útil" e lembre-se de "marcar como resposta".
    Quando você marca como resposta os outros visitantes encontram a solução facilmente.

    ** Para que o mau prevaleça basta que os bons não façam nada....

    • Marcado como Resposta tracaja sábado, 2 de dezembro de 2017 21:10
    sábado, 2 de dezembro de 2017 02:37
  • Legal vou trabalhar nisso, obrigado!
    sábado, 2 de dezembro de 2017 21:11