Save data from a textbox to a class and display on a datagrid

Asked

Viewed 1,391 times

1

I am making a program for simple registration, without using database, only with array. The program was already functional when I noticed that the most important part was wrong because I had not understood it properly. I ended up not using the class Person I created, but I ended up manipulating everything with textbox and the datagrid that I display the entries.

I couldn’t quite understand how to pull the data from the Person class (which I put the code below) to when I use a textbox to save the data in that class, in an array. And with this data saved, display each record on a datagrid line.

List<Pessoa> list = new List<Pessoa>();

        public class Pessoa
    {

        //atributos privados da classe Pessoa
        private string nome;
        private string endereço;
        private string ano_nascimento;
        private string telefone;

        //propriedades públicas, read-only
        public Pessoa(string nome, string endereço, string ano_nascimento, string telefone)
        {
            this.nome = nome;
            this.endereço = endereço;
            this.ano_nascimento = ano_nascimento;
            this.telefone = telefone;
        }

        //método construtor get(pega a informação) e set(grava)
        public string getNome()
        {
            return nome;
        }

        public string getEndereço()
        {
            return endereço;
        }

        public string getAno_nascimento()
        {
            return ano_nascimento;
        }

        public string getTelefone()
        {
            return telefone;
        }

        public void setNome(string nome)
        {
            this.nome = nome;
        }

        public void setEndereço(string endereço)
        {
            this.endereço = endereço;
        }

        public void setAno_nascimento(string ano_nascimento)
        {
           this.ano_nascimento = ano_nascimento;
        }

        public void setTelefone(string telefone)
        {
            this.telefone = telefone;
        }

        public void AlterarEndereco(string novoEndereco)
        {
            endereço = novoEndereco;
        }

        public void AlterarTelefone(string novoTelefone)
        {
            telefone = novoTelefone;
        }

    }

Part of the code I tried to save the register in an array after putting the data in each textbox.

private void bt_salvar_Click(object sender, EventArgs e)
        {
             list.Add(new Pessoa(txt_nome.Text, txt_endereco.Text, /*dataNasc*/ txt_ano.Text, txt_tele.Text));

        }

And this is the part of the save code that I saw that was really wrong and I wasn’t dealing with the class attributes.

string[] dados = { txt_nome.Text, txt_endereco.Text, txt_ano.Text, txt_tele.Text, txt_registro.Text };

        this.dataGridView1.Rows.Add(dados);

I am programming a Windows Forms Application in C# in Visual Studio.

inserir a descrição da imagem aqui

In the class called "Person", with the attributes "Name", "Address", "Anonascimento" and "Phone", I am using the private attributes that are made available by the public properties(read only). Below the current code:

   public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();
    }



    List<Pessoa> listcadastro = new List<Pessoa>();



    //apagar tudo que estava sendo escrito na opção de cadastro atual
    void reset()
    {
        txt_nome.Clear();
        txt_endereco.Clear();
        txt_ano.Clear();
        txt_registro.Clear();
        txt_tele.Clear();
        bt_pfisica.Checked = false;
        bt_pjuridica.Checked = false;
    }

    private void bt_cancel_Click(object sender, EventArgs e)
    {
        reset();
    }


    public class Pessoa
    {
        private string nome;
        private string endereço;
        private string ano_nascimento;
        private string telefone;

        /*
        //propriedades públicas, read-only
        public Pessoa(string nome, string endereço, string ano_nascimento, string telefone)
        {
            this.nome = nome;

            this.endereço = endereço;

            this.ano_nascimento = ano_nascimento;

            this.telefone = telefone;

        }*/

        public string Nome
        {
            get
            {
                return nome;
            }

            set
            {
                nome = value;
            }
        }

        public string Endereço
        {
            get
            {
                return endereço;
            }

            set
            {
                endereço = value;
            }
        }

        public string Ano_nascimento
        {
            get
            {
                return ano_nascimento;
            }

            set
            {
                ano_nascimento = value;
            }
        }

        public string Telefone
        {
            get
            {
                return telefone;
            }

            set
            {
                telefone = value;
            }
        }
    }



    private void bt_salvar_Click(object sender, EventArgs e)
    {



         listcadastro.Add(new Pessoa() {Ano_nascimento = txt_ano.Text, Nome = txt_nome.Text, Endereço = txt_endereco.Text, Telefone = txt_tele.Text });

         dataGridView1.DataSource = null;
         dataGridView1.DataSource = listcadastro; 
    }

    private void novoMenuItem_Click(object sender, EventArgs e)
    {

        txt_nome.Enabled = true;
        txt_ano.Enabled = true;
        txt_endereco.Enabled = true;
        txt_tele.Enabled = true;

    }

    private void limpa_dados()
    {
        txt_nome.ResetText();// limpa o nome
        txt_tele.ResetText();// limpa o telefone
        txt_endereco.ResetText();// limpa o endereço
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        txt_nome.Enabled = false;
        txt_ano.Enabled = false;
        txt_endereco.Enabled = false;
        txt_tele.Enabled = false;
        txt_registro.Enabled = false;
    }

    private void bt_pfisica_CheckedChanged(object sender, EventArgs e)
    {
        if (bt_pfisica.Checked)
        {
            txt_registro.Enabled = true;
        }
    }

    private void bt_pjuridica_CheckedChanged(object sender, EventArgs e)
    {
        if (bt_pjuridica.Checked)
        {
            txt_registro.Enabled = true;
        }
    }




}

}

  • Can you be more specific? I mean, give more details on this question of the grid you intend to use, for example

  • I ended up editing the question and added more codes, if it is not yet clear I can give more information without problems. I’m trying to be objective but I don’t think I’m making it

  • Any particular reason why you shouldn’t use get and set of C#? https://msdn.microsoft.com/pt-BR/library/w86s7x04.aspx

  • None, until I saw that it was also another way to make the constructor method. It is better to do with it?

1 answer

2


First I would change your class person to use the get and set of the C#

public class Pessoa
{
    private string nome;
    private string endereço;
    private string ano_nascimento;
    private string telefone;

    public string Nome
    {
        get
        {
            return nome;
        }

        private set
        {
            nome = value;
        }
    }

    public string Endereço
    {
        get
        {
            return endereço;
        }

        private set
        {
            endereço = value;
        }
    }

    public string Ano_nascimento
    {
        get
        {
            return ano_nascimento;
        }

        private set
        {
            ano_nascimento = value;
        }
    }

    public string Telefone
    {
        get
        {
            return telefone;
        }

        private set
        {
            telefone = value;
        }
    }

    public Pessoa(string nome, string endereço, string ano_nascimento, string telefone)
    {
        this.nome = nome;

        this.endereço = endereço;

        this.ano_nascimento = ano_nascimento;

        this.telefone = telefone;

    }
}

After that, on your save button, just add the items in the person list and refer to the DataGridView through property DataSource

private void button1_Click(object sender, EventArgs e)
{
    list.Add(new Pessoa(txt_ano.Text, txt_nome.Text, txt_endereco.Text, txt_tele.Text));

    dataGridView1.DataSource = null;
    dataGridView1.DataSource = list;
}

In the declarative form of Field (field) and Property (property) how the Person class was written. The method get returns the field associated with the property, the set assigns the value to the property field.

The contextual keyword value is used in the set common property statements. It is similar to a parameter of input into a method. The word value refers to the value that the customer code is trying to assign to property.

Source: https://msdn.microsoft.com/pt-Br/library/a1khb4f8.aspx

Complete source code: https://github.com/pablotdv/StackOverflow/tree/master/WindowsFormsApplication2

Browser other questions tagged

You are not signed in. Login or sign up in order to post.