D3POD Posted March 22, 2014 Report Share Posted March 22, 2014 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 More sharing options...
nelsonr Posted March 22, 2014 Report Share Posted March 22, 2014 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 More sharing options...
D3POD Posted March 22, 2014 Author Report Share Posted March 22, 2014 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 More sharing options...
nelsonr Posted March 22, 2014 Report Share Posted March 22, 2014 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 More sharing options...
D3POD Posted March 23, 2014 Author Report Share Posted March 23, 2014 Ahhh agora já percebi 🙂 Muito obrigado pela ajuda 😉 Cumprimentos, D3pod Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now