none
No se encontro NullReferenceExeption C# RRS feed

  • Pregunta

  • Me salta error en la siguiente linea del codigo:  _ClaseABM.Tabla = comboBox1.SelectedItem.ToString();

    namespace CapaUsuario
    {
        public partial class Form1 : Form
        {
            private readonly ClaseABM _ClaseABM;
            public Form1()
            {
                _ClaseABM = new ClaseABM();
                InitializeComponent();
                comboBox1.SelectedItem = 0;
                
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                _ClaseABM.Tabla = comboBox1.SelectedItem.ToString();
                _ClaseABM.Articulo = "";
                CargarGrilla(_ClaseABM);
            }
            public void CargarGrilla (ClaseABM ClaseABM)
            {
                Grilla.Rows.Clear();
                var lista = ClaseABM.Listar(_ClaseABM);
    
                foreach (var registro in lista)
                {
                    Grilla.Rows.Add(registro.Codigo, registro.Articulo); 
                }
            }
    
            private void BotonAlta_Click(object sender, EventArgs e)
            {
                _ClaseABM.Tabla = comboBox1.SelectedItem.ToString();
    
                if (Grilla.CurrentRow != null)
                {
                    _ClaseABM.Articulo = (string)Grilla.CurrentRow.Cells[1].Value;
                    _ClaseABM.Alta(_ClaseABM);
                }
    
                _ClaseABM.Articulo = "";
                CargarGrilla(_ClaseABM);
            }
        }
    }
    
    Muchas gracias!

    miércoles, 4 de julio de 2018 19:30

Todas las respuestas

  • Muy probablemente la propiedad SelectedItem es nula cuando la accede.  Veo que el código está en el evento Load del formulario, que se ejecuta cuando el formulario está por mostrarse (pero no se ha mostrado), así que el usuario no ha tenido la oportunidad de seleccionar algo del combo.

    Ah, veo que hay dos llamadas.  ¿En cuál de las dos se genera la excepción?


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT


    miércoles, 4 de julio de 2018 19:32
    Moderador
  • Se genera en la llamada que esta en el Load
    miércoles, 4 de julio de 2018 19:47
  • hola

    No deberias usar el SelectedItem, si asignaste el DataSource del combo y el ValueMember deberias usar el SelectedValue para tomar el valor seleccionado

    Ademas veo que usas

    public void CargarGrilla (ClaseABM ClaseABM)

    pero despues dentro del codigo

    var lista = ClaseABM.Listar(_ClaseABM);
    

    o sea para que pasas por parametro la ClaseABM pero porque haces esto ? es confuso

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    miércoles, 4 de julio de 2018 19:50
  • Se genera en la llamada que esta en el Load

    Ok, entonces probablemente es lo que le dije.

    Ahora bien, ¿cómo llena usted el combo?  ¿Utiliza un DataSource?  Si es así, ¿asigna usted valores a las propiedades ValueMember y DisplayMember del combo?  Si es así, ¿qué valores tienen?

    También veo comboBox1.SelectedItem = 0 en el constructor del formulario.  ¿Qué propósito se supone que esto cumple?


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    miércoles, 4 de julio de 2018 19:55
    Moderador
  • Deleted
    miércoles, 4 de julio de 2018 21:01