Usuário com melhor resposta
Referência nula em objeto instanciado

Pergunta
-
Bom dia Pessoal.
Estou migrando de aspNET para Windows Forms e estou esbarrei em um problema que não consigo entender.
Em um projeto C# tenho dois forms, o primeiro com um dataGridView que exibe uma lista com clientes. No evento do DatagridView do Form 1, Pego o ID do meu cliente e o uso como parâmetro para recuperar no Form 2. Eu pelo Debug vejo que as informações são recuperadas, mas para instancia-las no TextBox do Form, da como nula referencia. Abaixo seguem do debug:a seguir segue imagem dos dados recuperados. Eu fiz com Linq to SQL:
o seguinte erro esta sendo me apresentado:
posso estar deixando passar para este erro estar ocorrendo?
Respostas
-
Claudio, agora que vi.
Tu tiraste o método "InitializeComponent" do construtor - o TextBox será nulo.
Antes da linha 26 coloque:
InitializeComponent();
E acredito que o problema será resolvido.
Att., Rafael Simor
- Marcado como Resposta Claudio Moura segunda-feira, 21 de março de 2016 15:32
Todas as Respostas
-
Claudio,
você tem que passar a referência para o novo form, antes complete load.
Dê uma olhada aqui:
Antero Marques
-
-
Bom dia Antero,
Eu ja tin ha lido este artigo, na realidade foi nele pelo qual foi base para a implementação.
No Form 1 eu coloquei a seguinte código para referenciar no segundo Form:
private void gridClientes_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { int intCliente = Convert.ToInt32(gridClientes.Rows[e.RowIndex].Cells[0].Value); frmCadastroEditaCliente edicaoCliente = new frmCadastroEditaCliente(intCliente); edicaoCliente.Tag = this; edicaoCliente.Show(); Hide(); }
-
-
Bom dia.
O atributo "Nome" está realmente com valor?
Acredito que o problema estejas no teu encapsulamento, pois apesar dos campos PRIVADOS (eis o cadeado ao lado dos ícones de Field - o cubo azul) estarem com valor, a propriedade pública pode não estar.
Ao cair na exception, recomendo dar um "Ok" e colocar o mouse tanto em cima do txtCliente quanto do .Nome (ou verificar nos autos, claro) para ver o que está quebrando.
Att., Rafael Simor
-
-
Claudio, agora que vi.
Tu tiraste o método "InitializeComponent" do construtor - o TextBox será nulo.
Antes da linha 26 coloque:
InitializeComponent();
E acredito que o problema será resolvido.
Att., Rafael Simor
- Marcado como Resposta Claudio Moura segunda-feira, 21 de março de 2016 15:32
-
André,
Sobre o fato de não estar setado, eu teria que usar if?
Eu fiz dessa forma, veja se está certo:
public frmCadastroEditaCliente(int intCliente) { // TODO: Complete member initialization this.intCliente = intCliente; var cliente = (from p in db.Clientes where p.ClienteID == intCliente select p).SingleOrDefault(); if (txtCliente != null) { txtCliente.Text = cliente.Nome; } }
-