none
Duvidas TEXTBOX C# RRS feed

  • Pergunta

  • Olá, criei um método dento de uma classe chamada Conta, e no método gostaria de faze referencia ao textbox que está no windows foms, mas quando digito não aparece disponível no método, pq será?

    Obrigada


    Nah

    quarta-feira, 4 de janeiro de 2017 03:33

Respostas

  • Você não consegue pegar ou atribuir valor a um textbox, chamando-o de uma outra classe.

    Para fazer essas operações, eu recomendo criar métodos na classe Form1, para poder acessar esses controles.

    Poderia fazer com métodos separados para cada textbox, mas como todos tratam da mesma coisa, farei ele retornar um array com todos os dados.

    Tenta fazer dessa forma:

    CLASSE CONTA:

        public class Conta 
        {
            Form1 fr1 = new Form1();
    
            public void EnviarEmail()
            {
                string[] dados = fr1.CapturarDados();
                System.Net.Mail.MailMessage mes = new System.Net.Mail.MailMessage();
    
                mes.To.Add(dados[0]);
                mes.CC.Add(dados[1]);
    
                System.Net.Mail.Attachment anexo = new System.Net.Mail.Attachment(dados[2]);
                mes.Attachments.Add(anexo);
    
                mes.Subject = dados[3];
    
                mes.From = new System.Net.Mail.MailAddress("oseuemail@pplware.com");
    
                mes.Body = dados[4];
             }
        }

    FORM1:

        public partial class Form1 : Form
        {
            Conta ct = new Conta();
    
            public Form1()
            {
                InitializeComponent();
            }
    
            public string[] CapturarDados()
            {
                return new string[] {textbox1.Text, textbox2.Text, textbox3.Text, textbox4.Text, textbox5.Text};
            }
    
        }

    Poderia ser feito de outra forma, criando uma classe intermediária para organizar os dados, etc, mas fica a seu critério.

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta Nah_ quarta-feira, 4 de janeiro de 2017 16:58
    quarta-feira, 4 de janeiro de 2017 16:51

Todas as Respostas

  • Como está seu código?

    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quarta-feira, 4 de janeiro de 2017 09:19
  • Olá,

    Podem ser vários os motivos, você pode verificar:

    1) Tem certeza que o método está no form a qual essa classe pertence?

    2) Seu método não pode ser estático

    Entre outros motivos, mas seria bom postar o código para termos certeza.

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quarta-feira, 4 de janeiro de 2017 10:06
  • Olha como tá meu código: 

    Aqui a classe e o método, mas qd digito o textbox ele n funciona.

      public class Conta 
        {
            Form1 fr1 = new Form1();
    
            public void EnviarEmail()
            {
                System.Net.Mail.MailMessage mes = new System.Net.Mail.MailMessage();
    
                mes.To.Add(textbox1.text);
                mes.CC.Add(textBox2.Text);
    
                System.Net.Mail.Attachment anexo = new System.Net.Mail.Attachment(textBox3.Text);
                mes.Attachments.Add(anexo);
    
                mes.Subject = textBox4.Text;
    
                mes.From = new System.Net.Mail.MailAddress("oseuemail@pplware.com");
    
                mes.Body = textBox5.Text;
    }
    }

    E aqui está o código do form:

     public partial class Form1 : Form
        {
            Conta ct = new Conta();
    
            public Form1()
            {
                InitializeComponent();
            }
    }


    Nah

    quarta-feira, 4 de janeiro de 2017 16:33
  • Coloquei aqui embaixo. 

    Nah

    quarta-feira, 4 de janeiro de 2017 16:43
  • Você não consegue pegar ou atribuir valor a um textbox, chamando-o de uma outra classe.

    Para fazer essas operações, eu recomendo criar métodos na classe Form1, para poder acessar esses controles.

    Poderia fazer com métodos separados para cada textbox, mas como todos tratam da mesma coisa, farei ele retornar um array com todos os dados.

    Tenta fazer dessa forma:

    CLASSE CONTA:

        public class Conta 
        {
            Form1 fr1 = new Form1();
    
            public void EnviarEmail()
            {
                string[] dados = fr1.CapturarDados();
                System.Net.Mail.MailMessage mes = new System.Net.Mail.MailMessage();
    
                mes.To.Add(dados[0]);
                mes.CC.Add(dados[1]);
    
                System.Net.Mail.Attachment anexo = new System.Net.Mail.Attachment(dados[2]);
                mes.Attachments.Add(anexo);
    
                mes.Subject = dados[3];
    
                mes.From = new System.Net.Mail.MailAddress("oseuemail@pplware.com");
    
                mes.Body = dados[4];
             }
        }

    FORM1:

        public partial class Form1 : Form
        {
            Conta ct = new Conta();
    
            public Form1()
            {
                InitializeComponent();
            }
    
            public string[] CapturarDados()
            {
                return new string[] {textbox1.Text, textbox2.Text, textbox3.Text, textbox4.Text, textbox5.Text};
            }
    
        }

    Poderia ser feito de outra forma, criando uma classe intermediária para organizar os dados, etc, mas fica a seu critério.

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta Nah_ quarta-feira, 4 de janeiro de 2017 16:58
    quarta-feira, 4 de janeiro de 2017 16:51
  • Obrigada, queria deixar na outra classe mas como não há como, vou criar o método na classe do form mesmo. 

    Nah

    quarta-feira, 4 de janeiro de 2017 16:58