Jump to content

Duvida com utilização de classes


D3POD
 Share

Recommended Posts

Boas, estou a tentar usar uma classe para me passar 2 valores entre forms.

O que tenho é um datagridview onde gravo o valor do id e nome do cliente em 2 variáveis e de seguida pretendo inserir esses mesmo valores numa classe para que assim possa usar num outro form.

Ainda estou numa fase de perceber as classes pelo que peço a vossa ajuda a resolver isto.

O problema é que no segundo form não me chegam os valores...

Class:

public class ncliente
   {
    public string numero;
    public string nome;
    public ncliente(string numero, string nome)
    {
	    this.numero = numero;
	    this.nome = nome;
    }

   }

Form 1:

private void btn_inserir_Click(object sender, EventArgs e)
    {
	    string id;
	    string nome;
	    id = (dgv_clientes.CurrentRow.Cells[0].Value.ToString());
	    nome = dgv_clientes.CurrentRow.Cells[1].Value.ToString();
	    ncliente n1 = new ncliente(id, nome);
	    Form2 f2 = new Form2();
	    f2.Show();
	    this.Close();
    }

Form2:

private void Form2_Load(object sender, EventArgs e)
    {
	    string numero = txt_id.Text;
	    string nome = txt_nome.Text;
	    ncliente n1 = new ncliente(numero, nome);
	    numero = n1.numero;
	    nome = n1.nome;

    }

Já experimentei de várias formas, tentei vários tutoriais e não consigo sair desta fase.

Agradeço toda a vossa ajuda 🙂

Cumprimentos,

D3POD

Link to comment
Share on other sites

No form2, crias uma variavel publica global ao form, do tipo da classe que pretendes. Exemplo:

public partial class Form2 : Form
{
public Form1.ncliente cliente = null;

private void Form2_Load(object sender, EventArgs e)
{
	Console.Write(String.Format("{0} - {1}", cliente.numero, cliente.nome));
}
}

Quando abres o form2 a partir do form 1, preenches os dados

private void btn_inserir_Click(object sender, EventArgs e)
{
	string id;
	string nome;
	id = (dgv_clientes.CurrentRow.Cells[0].Value.ToString());
	nome = dgv_clientes.CurrentRow.Cells[1].Value.ToString();
	//
	Form2 f2 = new Form2();
	f2.cliente = new ncliente(id, nome);
	f2.Show();
	this.Close();
}

é apenas um exemplo, existem várias formas de fazer o que pretendes

Link to comment
Share on other sites

Boa noite, acabei por resolver assim:

private void btn_inserir_Click(object sender, EventArgs e)
    {
	    string id;
	    string nome;
	    id = (dgv_clientes.CurrentRow.Cells[0].Value.ToString());
	    nome = dgv_clientes.CurrentRow.Cells[1].Value.ToString();
	    ncliente n1 = new ncliente(id, nome);
	    Form2 f2 = new Form2();
	    f2.txt_id.Text = n1.numero;
	    f2.txt_nome.Text = n1.nome;
	    f2.Show();
	    this.Close();
    }

não percebi do teu exemplo a parte variável global uma vez que associas o ncliente a um form :S podes me explicar como funciona?

Link to comment
Share on other sites

Esta parte?

public partial class Form2 : Form
{
       public Form1.ncliente cliente = null;

Aqui apenas está a definir uma variavel cliente do tipo "Form1.ncliente".

"ncliente" é uma classe que está definida no form1, por isso se no form2 usares apenas "public ncliente cliente", vai dar erro porque não encontra nada do tipo ncliente.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.