none
Error: Null Reference Exception RRS feed

  • Pregunta

  • Hola que tal a todos, tengo el siguiente código el cual cuando termina de realizar el recorrido foreeach me devuelve error:

    System.NullReferenceException: 'Object reference not set to an instance of an object.'

    Pero mis variables si están intanciadas, "x" y "y" las tengo igualadas a 0.

    Aqui es donde me marca el error cuando termino de hacer el recorrido foreach:

    x = Convert.ToInt32(dataGridView1.Rows[r.Index].Cells[0].Value.ToString());


    private void btnStart_Click(object sender, EventArgs e)
        {
            int hWnd = FindWindow(null, "Calculator");
            if (hWnd > 0) //If found an action
            {
                foreach (DataGridViewRow r in dataGridView1.Rows)
                {
                    int x = 0;
                    int y = 0;
                    String action;
    
                    x = Convert.ToInt32(dataGridView1.Rows[r.Index].Cells[0].Value.ToString());
                    y = Convert.ToInt32(dataGridView1.Rows[r.Index].Cells[1].Value.ToString());
                    action = dataGridView1.Rows[r.Index].Cells[2].Value.ToString();
    
                    switch (dataGridView1.Rows[r.Index].Cells[2].Value.ToString())
                    {
                        case "MouseLeft":
                            Thread.Sleep(1500);
                            SetCursorPos(x, y);
                            clickMouseLeft();
                            break;
    
                        case "MouseRight":
                            Thread.Sleep(1500);
                            SetCursorPos(x, y);
                            clickMouseRight();
                            break;
    
                        case "Ctrl+c":
                            Thread.Sleep(1500);
                            SetCursorPos(x, y);
                            //Copy(1);
                            break;
    			default:
                            MessageBox.Show("Invalid action");
                            break;
                    }
                }
            }

    O que objeto debo de instanciar?

    Espero me puedan ayudar.

    Saludos

    DS


    Aprendiz de todos maestro de nadie. Saludos desde Cd. Juarez Chihuahua Mexico. DS.

    miércoles, 9 de septiembre de 2020 1:59

Respuestas

Todas las respuestas

  • Deleted
    miércoles, 9 de septiembre de 2020 2:10
  • Hola, la respuesta te ha funcionado?

    Saludos

    miércoles, 9 de septiembre de 2020 16:32
    Moderador
  • El control agrega una fila al final. Existen la fila y sus celdas, pero no existen aún  objetos asignados a ellas. La excepción salta cuando intentas operar contra esos objetos inexistentes.

    Solución, indícale al control que no agregue esa fila al final (hay una propiedad para ello). O, testea que r no sea NewRow. Puedes hacer esto al crear el objeto iterable, mediante una cláusula "Where", o puedes condicionarlo dentro del bloque del foreach...

    Lo he solucionado con la propiedad del DataGridView, pero como lo puedo condicionar con el bloque foreach?
    En un for lo hago así:

    for (int i= 0; i< dtg1.Rows.Count-1; i++)

    Y en el foreach, como lo condiciono?

    DS



    Aprendiz de todos maestro de nadie. Saludos desde Cd. Juarez Chihuahua Mexico. DS.

    miércoles, 9 de septiembre de 2020 18:14