none
me sale este error al llamar un formulario desde un datagridview (Referencia a objeto no establecida como instancia de un objeto) RRS feed

  • Pregunta

  • datalistado.CurrentRow.Selected = true;
    try
    {
    string t, s, c;
    t = datalistado.Rows[e.RowIndex].Cells[0].Value.ToString();
    s = datalistado.Rows[e.RowIndex].Cells[1].Value.ToString();
    c = datalistado.Rows[e.RowIndex].Cells[2].Value.ToString();


    FrmActivarMotivo frm = new FrmActivarMotivo(t, s, c);
    frm.ShowDialog();

    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }

    lunes, 21 de enero de 2019 1:22

Todas las respuestas

  • Cuando te sale lo de "referencia no establecida..." quiere decir que una de las variables vale null. Por ejemplo, si ...Cells[0].Value es null, entonces al ponerle detrás .ToString() dará ese error porque no se puede invocar ToString sobre un null. Ese es solo un ejemplo, podría estar ocurriendo lo mismo con cualquiera de los objetos que aparecen en cualquier punto de tu código. No se puede saber cuál de ellos es solo con mirar el fragmento de código fuente, así que tendrás que usar el debugger. Fíjate bien en cuál es la línea donde se detiene la ejecución (desactiva momentáneamente el try...catch o cambia en VS la opción para que el debugger pare en la línea del error) y una vez que la ejecución esté detenida en esa línea, pasa el ratón por encima de las variables, o usa la ventana "inmediato" en VS para examinar cada variable hasta que encuentres cuál vale null.
    lunes, 21 de enero de 2019 7:35
    Moderador
  • hola

    Partamos de la base que esta linea

    datalistado.CurrentRow.Selected = true;

    no tiene ningun sentido, se supone que el CurrentRow es util para conocer la row seleccionada por el usario, tu la usarias para validar

    if(datalistado.CurrentRow == null){ MessageBox.Show("Seleccione una fila"); return; }

    //resto codigo

    definir que se seleccione no aplica

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 21 de enero de 2019 13:16
  • Hola, puedes hacer algo como esto.. Solo si tiene dato que que seleccione la grilla .

    //Boton Buscar private void BuscarDatos() { try { if (datalistado.RowCount > 0) { grdFamilias.Select(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } //Bton Editar o Ver Datos private VerDatos() {

    if (datalistado.RowCount == 0)

    {

    return;

    }

    string t; string s; string c; t = datalistado.Rows(e.RowIndex).Cells(0).Value.ToString(); s = datalistado.Rows(e.RowIndex).Cells(1).Value.ToString(); c = datalistado.Rows(e.RowIndex).Cells(2).Value.ToString(); FrmActivarMotivo frm = new FrmActivarMotivo(t, s, c); frm.ShowDialog(); }

    Bader Molinas

    Paraguay

    lunes, 21 de enero de 2019 17:02