none
Qual a forma mais correta e prática para obter o valor de uma variável de outro Form??? RRS feed

  • Pergunta

  • Sou iniciante em C# e achei na net várias formas de se fazer.
    A única que eu entendi foi usando uma classe para armazenar a variável mudar seu valor qdo necessário e usá-la no outro form!!!!

    Infelizmente nao consegui!!!
    =[

    Ajudem ai!!! kkk!!!

    quarta-feira, 13 de julho de 2011 00:48

Respostas

  • Cara, eu uso classe para variáveis globais, como por exemplo o usuário e o seu perfil:

     public static class Usuario
      {
        private static string m_perfil = "";
        public static string Perfil
        {
          get { return m_perfil; }
          set { m_perfil = value; }
        }
    
        private static string _login = "";
        public static string Login
        {
          get { return _login; }
          set { _login = value; }
        }
    


    Depois no form fica assim:

    private void btnLogin_Click(object sender, EventArgs e)
        {
          Acessos log = new Acessos();
    
          if (log.LoginOk(txtUsuario.Text.Trim(), txtSenha.Text.Trim()))
          {
            Usuario.Perfil = log.Tipo;
            Usuario.Login = log.Nome;
            this.Dispose();
    


    Agora de um form para outro, faço assim:

    private void btnEmailFuncionario_Click(object sender, EventArgs e)
        {
            frmEmail email = new frmEmail();
            email.pOrigem = "Funcionario";
            email.nome = txtNome.Text;
            email.dataHomo = dtpHomologacao.Value.ToString();
    
    e no outro form que vai receber as informações:

    public partial class frmEmail : Form
      {
        #region ATRIBUTOS
        public string pOrigem = null;
        public string nome { get; set; }
        public string dataHomo { get; set; }
    

    Não sei se é a melhor forma, mas pelo menos deve te ajudar a pensar.


    Tecnólogo em Análise e Desenvolvimento de Sistemas :: http://letrasdemusicas.webng.com
    quarta-feira, 13 de julho de 2011 12:15
  • Murilo, não sei se é a forma mais correta, mais é a que eu uso pessoalmente.

    Veja no artigo abaixo:

    http://www.linhadecodigo.com.br/Artigo.aspx?id=1741

    Veja também uma dúvida igual a sua, respondida tempos atrás:

    http://social.msdn.microsoft.com/forums/pt-BR/vscsharppt/thread/8e9012e2-35df-46f1-a673-3d7be4df223a

    Abraços.


    Se a resposta for útil, favor votar como útil para que ajude outros usuários com a mesma dúvida | Dicas e artigos sobre .NET em http://programandodotnet.wordpress.com e http://www.devmedia.com.br/wellingtonbalbo | Siga-me no Twitter: @wellingtonbalbo
    quarta-feira, 13 de julho de 2011 01:51
  • Veja este exemplo:

     public class Passar_informacao

        {

            private string nome = string.Empty;

            private int idade;

          public Passar_informacao()

            {

                idade = -0;

     

            }

            public int Idade

            {

                get { return idade; }

                set { idade = value; }

            }

     

            public string Nome

            {

                get { return nome; }

                set { nome = value; }

            }

    Agora no form 1:
    namespace TurnPC
    {
        public partial class Form1 : Form
        {
            public Form2 frm;
            Passar_informacao passar;
           
            public Form1()
            {
                InitializeComponent();
                passar = new Passar_informacao();
                frm = new Form2();
            }
      private void button2_Click_1(object sender, EventArgs e)
            {
                Form2 frm2 = new Form2();// Email_Form();
                frm2.valore.Nome = "tudo"; ou poderia ser textbox1.text
                frm2.valore.Idade = 20;
                frm2.Show();
            }
    }
    form2 que vai receber a informacao:
    namespace TurnPC
    {
        public partial class Form2 : Form
        {
           
            public Passar_informacao valore;
                   
            public Form2()
            {
                InitializeComponent();
                 valore = new Passar_informacao();
             }
            private void Form2_Load(object sender, EventArgs e)
            {
                textBox1.Text = valore.Nome;
                textBox2.Text = valore.Idade.ToString();
            }


    One word frees us of all the weight and pain of life: that word is love.
    quarta-feira, 13 de julho de 2011 08:18
    Moderador

Todas as Respostas

  • Murilo, não sei se é a forma mais correta, mais é a que eu uso pessoalmente.

    Veja no artigo abaixo:

    http://www.linhadecodigo.com.br/Artigo.aspx?id=1741

    Veja também uma dúvida igual a sua, respondida tempos atrás:

    http://social.msdn.microsoft.com/forums/pt-BR/vscsharppt/thread/8e9012e2-35df-46f1-a673-3d7be4df223a

    Abraços.


    Se a resposta for útil, favor votar como útil para que ajude outros usuários com a mesma dúvida | Dicas e artigos sobre .NET em http://programandodotnet.wordpress.com e http://www.devmedia.com.br/wellingtonbalbo | Siga-me no Twitter: @wellingtonbalbo
    quarta-feira, 13 de julho de 2011 01:51
  • Eu costumo usar uma variável pública e estática,apenas.Não sei se é a forma mais correta,apenas uso =).
    quarta-feira, 13 de julho de 2011 01:59
  • Polimorfismo.

    Boa Wellington, gosto muito desse conceito... é muito poderoso
    Murilo, a dica do Wellington é muito boa =D

    Eu nunca trabalhei com forms em C#, mais em Java eu criava uma classe com propriedades e passava de uma tela (form) para outro em forma de objeto.

    grande abraço,
    Leonardo B. Moreira
    http://leonardobatistamoreira.blogspot.com


    Leonardo B. Moreira - Web Developer .net with asp.net and C# - I know, it is only programming but I like it. http://leonardobatistamoreira.blogspot.com
    quarta-feira, 13 de julho de 2011 02:19
  • Sou iniciante em C# e achei na net várias formas de se fazer.
    A única que eu entendi foi usando uma classe para armazenar a variável mudar seu valor qdo necessário e usá-la no outro form!!!!

    Infelizmente nao consegui!!!
    =[

    Ajudem ai!!! kkk!!!

    usa class, seria a forma correcta de passar informacao de um form ao outro.

    a class tem de ser publica, voce evita delcar os form1 e form2 como muita gente faz.


    One word frees us of all the weight and pain of life: that word is love.
    quarta-feira, 13 de julho de 2011 08:05
    Moderador
  • Veja este exemplo:

     public class Passar_informacao

        {

            private string nome = string.Empty;

            private int idade;

          public Passar_informacao()

            {

                idade = -0;

     

            }

            public int Idade

            {

                get { return idade; }

                set { idade = value; }

            }

     

            public string Nome

            {

                get { return nome; }

                set { nome = value; }

            }

    Agora no form 1:
    namespace TurnPC
    {
        public partial class Form1 : Form
        {
            public Form2 frm;
            Passar_informacao passar;
           
            public Form1()
            {
                InitializeComponent();
                passar = new Passar_informacao();
                frm = new Form2();
            }
      private void button2_Click_1(object sender, EventArgs e)
            {
                Form2 frm2 = new Form2();// Email_Form();
                frm2.valore.Nome = "tudo"; ou poderia ser textbox1.text
                frm2.valore.Idade = 20;
                frm2.Show();
            }
    }
    form2 que vai receber a informacao:
    namespace TurnPC
    {
        public partial class Form2 : Form
        {
           
            public Passar_informacao valore;
                   
            public Form2()
            {
                InitializeComponent();
                 valore = new Passar_informacao();
             }
            private void Form2_Load(object sender, EventArgs e)
            {
                textBox1.Text = valore.Nome;
                textBox2.Text = valore.Idade.ToString();
            }


    One word frees us of all the weight and pain of life: that word is love.
    quarta-feira, 13 de julho de 2011 08:18
    Moderador
  • Cara, eu uso classe para variáveis globais, como por exemplo o usuário e o seu perfil:

     public static class Usuario
      {
        private static string m_perfil = "";
        public static string Perfil
        {
          get { return m_perfil; }
          set { m_perfil = value; }
        }
    
        private static string _login = "";
        public static string Login
        {
          get { return _login; }
          set { _login = value; }
        }
    


    Depois no form fica assim:

    private void btnLogin_Click(object sender, EventArgs e)
        {
          Acessos log = new Acessos();
    
          if (log.LoginOk(txtUsuario.Text.Trim(), txtSenha.Text.Trim()))
          {
            Usuario.Perfil = log.Tipo;
            Usuario.Login = log.Nome;
            this.Dispose();
    


    Agora de um form para outro, faço assim:

    private void btnEmailFuncionario_Click(object sender, EventArgs e)
        {
            frmEmail email = new frmEmail();
            email.pOrigem = "Funcionario";
            email.nome = txtNome.Text;
            email.dataHomo = dtpHomologacao.Value.ToString();
    
    e no outro form que vai receber as informações:

    public partial class frmEmail : Form
      {
        #region ATRIBUTOS
        public string pOrigem = null;
        public string nome { get; set; }
        public string dataHomo { get; set; }
    

    Não sei se é a melhor forma, mas pelo menos deve te ajudar a pensar.


    Tecnólogo em Análise e Desenvolvimento de Sistemas :: http://letrasdemusicas.webng.com
    quarta-feira, 13 de julho de 2011 12:15