Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Duvida sobre comboBox

Tentei fazer uma aplicação apos concluir o curso, porem na linha de add o item no comboBox esta dando essa exception

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CadastroKarin
{
    public partial class Form1 : Form
    {
        DadosUsuario[] dadosUsuarios;


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {


                dadosUsuarios = new DadosUsuario[100];
                dadosUsuarios[0] = new DadosUsuario();
                dadosUsuarios[0].Nome = "karin";
                dadosUsuarios[0].CPF = "0000000000000";

                dadosUsuarios[1] = new DadosUsuario();
                dadosUsuarios[1].Nome = "Peterson";
                dadosUsuarios[1].CPF = "111111111111";

                foreach (DadosUsuario dados in dadosUsuarios)
                {
         problema aqui - -->       comboUsuario.Items.Add(dados.Nome);
                }

            }

            private void comboUsuario_SelectedIndexChanged(object sender, EventArgs e)
            {
                int indiceSelecionado = comboUsuario.SelectedIndex;
                DadosUsuario usuarioSelecionado = dadosUsuarios[indiceSelecionado];

                buscaNome.Text = usuarioSelecionado.Nome;
                buscaCpf.Text = usuarioSelecionado.CPF;

            }
        }


}
5 respostas

Olá, Karin

Pode postar aqui o texto da exception para darmos uma olhada? Qual problema está ocorrendo na linha comboUsuario.Items.Add(dados.Nome);?

System.ArgumentNullException ocorrido HResult=0x80004003 Message=Valor não pode ser nulo. Arg_ParamName_Name Source=System.Windows.Forms StackTrace: em System.Windows.Forms.ComboBox.ObjectCollection.AddInternal(Object item) em System.Windows.Forms.ComboBox.ObjectCollection.Add(Object item) em CadastroKarin.Form1.Form1_Load(Object sender, EventArgs e) em C:\Users\Karin Oldani\Desktop\Curso\C#\CadastroKarin\CadastroKarin\Form1.cs:linha 38 em System.Windows.Forms.Form.OnLoad(EventArgs e) em System.Windows.Forms.Form.OnCreateControl() em System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) em System.Windows.Forms.Control.CreateControl() em System.Windows.Forms.Control.WmShowWindow(Message& m) em System.Windows.Forms.Control.WndProc(Message& m) em System.Windows.Forms.ScrollableControl.WndProc(Message& m) em System.Windows.Forms.Form.WmShowWindow(Message& m) em System.Windows.Forms.Form.WndProc(Message& m) em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) em System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

solução!

Ah, agora entendi!

O problema ocorre quando a variável dados assume valor nulo. Mas por quê?

Veja que você declarou:

dadosUsuarios = new DadosUsuario[100];

Acontece que dadosUsuarios agora é um array de 100 elementos (índices 0 - 99), porém eles não estão inicializados, isto é, o valor de cada um dos 100 ainda é null.

Em seguida você define os dois primeiros (índices 0 e 1):

                dadosUsuarios = new DadosUsuario[100];
                dadosUsuarios[0] = new DadosUsuario();
                dadosUsuarios[0].Nome = "karin";
                dadosUsuarios[0].CPF = "0000000000000";

                dadosUsuarios[1] = new DadosUsuario();
                dadosUsuarios[1].Nome = "Peterson";
                dadosUsuarios[1].CPF = "111111111111";

Agora, com 2 posições no array definidas, ainda temos 98 posições nulas (indices 2-99). Quando o programa chega no índice 2, o erro acontece.

Então sugiro que você mude o tamanho do array para somente 2 elementos:

dadosUsuarios = new DadosUsuario[2];

Outra solução seria trocar o tipo de DadosUsuario de DadosUsuario[] para List<DadosUsuario>

Muito obrigada

Obrigado por participar, Karin!