Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Ao selecionar o item do comboBox aparece o erro: An unhandled exception of type 'System.NullReferenceException' occurred in CaixaEletronico.exe o erro ocorre na linha: contaSelecionada = contas[indiceSelecionado];

public partial class Form1 : Form
{
    private Conta conta;

    Conta [] contas;

    Conta contaSelecionada;

    public Form1()
    {
        InitializeComponent();
    }

    public void Form1_Load(object sender, EventArgs e)
    {
        Conta[] contas = new Conta[2];

        Conta contaDoJeff = new Conta();
        contaDoJeff.Titular = new Cliente();
        contaDoJeff.Titular.Nome = "Jefferson";
        contaDoJeff.Numero = 1;

        contas[0] = contaDoJeff;

        MostraConta(contaDoJeff);
        Conta contaDokratos = new Conta();
        contaDokratos.Titular = new Cliente();
        contaDokratos.Titular.Nome = "Kratos";
        contaDokratos.Numero = 1;
        contas[1] = contaDokratos;

        // teste utiliza conta//  
        MessageBox.Show(contas[0].Titular.Nome + contas[1].Titular.Nome);

        foreach (Conta c in contas) {
            comboContas.Items.Add(c.Titular.Nome);
        }

    }

    private void MostraConta(Conta conta)
    {
        textTitular.Text = conta.Titular.Nome;
        textNumeroConta.Text = Convert.ToString(conta.Numero);
        textSaldo.Text = Convert.ToString(conta.Saldo);
        textAgencia.Text = Convert.ToString(conta.agencia);
    }

    public void comboContas_SelectedIndexChanged(object sender, EventArgs e)
    {
        int indiceSelecionado = comboContas.SelectedIndex;
        contaSelecionada = contas[indiceSelecionado];
        this.MostraConta(contaSelecionada);
    }
}
1 resposta
solução!

Olá, Jefferson!

No seu caso, está dando NullReferenceException porque você não instancia a variável contas da classe Form1. Você instanciou a variável contas do método Form1_Load.

Como o método comboContas_SelectedIndexChanged utiliza a variável da classe (que está nula), ele lança essa exceção.

Segue seu código atualizado como deveria estar. Adicionei comentários de onde eu mudei e ocultei os códigos que não fazem parte da solução para não ficar muito grande:

public partial class Form1 : Form
{
    private Conta conta;

    // Adicionei um private aqui para ele não ser default
    private Conta [] contas;

    // Adicionei um private aqui para ele não ser default
    private Conta contaSelecionada;

    // Ocultado o Construtor

    public void Form1_Load(object sender, EventArgs e)
    {
        // Remover essa linha debaixo, só deixei comentado para você ver que não precisa mais dela
        // Conta[] contas = new Conta[2];

        Conta contaDoJeff = new Conta();
        contaDoJeff.Titular = new Cliente();
        contaDoJeff.Titular.Nome = "Jefferson";
        contaDoJeff.Numero = 1;

        // Adicionado o operador this para explicitar que estou usando a variável da classe
        this.contas[0] = contaDoJeff;

        MostraConta(contaDoJeff);
        Conta contaDokratos = new Conta();
        contaDokratos.Titular = new Cliente();
        contaDokratos.Titular.Nome = "Kratos";
        contaDokratos.Numero = 1;

        // Adicionado o operador this para explicitar que estou usando a variável da classe
        this.contas[1] = contaDokratos;

        // Adicionado o operador this para explicitar que estou usando a variável da classe
        // teste utiliza conta
        MessageBox.Show(this.contas[0].Titular.Nome + this.contas[1].Titular.Nome);

        foreach (Conta c in contas) {
            comboContas.Items.Add(c.Titular.Nome);
        }

    }

    // Ocultado o método MostraConta(Conta conta)

    public void comboContas_SelectedIndexChanged(object sender, EventArgs e)
    {
        int indiceSelecionado = comboContas.SelectedIndex;

        // Agora essa linha funciona e adicionado o this novamente.
        contaSelecionada = this.contas[indiceSelecionado];
        this.MostraConta(contaSelecionada);
    }
}

Teste novamente, por favor. Qualquer dúvida é só falar.