none
Como evitar el error out of range C# RRS feed

  • Pregunta

  • Buenas tardes,

    utilizo un boton para moverme dentro de un DataGridView y al objeto mencionado le cargo datos desde una Base de datos

    bien lo que sucede es que si mi consulta carga 3 resultados  y yo presiono el boton siguiente luego que estoy en el ultimo resultado me indica error por que :

    Index was out of range. Must be non-negative and less than the size of the collection.
    Parameter name: index'

    quisiera saber como evitar que pueda presionar el boton siguiente el usuario cuando llegue al final de los resultados o bien hacer que vuelva al resultado #1.

    private void btnsiguiente_Click(object sender, EventArgs e)
            {
                int Columna;
                int Fila;
                Columna = dtgv.CurrentCellAddress.X;
                Fila = dtgv.CurrentCellAddress.Y;
    
                dtgv.CurrentCell = dtgv[Columna + 0,Fila+1];
            }


    samuel


    lunes, 21 de enero de 2019 17:44

Todas las respuestas

  • Hola,

    De seguro al momento de ejecutar el OnClick del boton, tu arreglo tiene un indice negativo, es decir, no puedes accerder a un arreglo, cuando su indice esta fuera del rango, por lo cual te esta generando ese error.

    Saludos !!

    lunes, 21 de enero de 2019 17:51
  • hola

    Alli veo que tomas dtgv.CurrentCellAddress.Y y le sumas 1, pero como sabes que existe una fila mas si es que no validas si es la ultima

    debes agregar una validacion, por ejemplo

    if(dtgv.CurrentCellAddress.Y == dtgv.Rows.Count){
    
       MessageBox.Show("llego a la ultima fila");
    
       return;
    
    }
    
    //resto codigo


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 21 de enero de 2019 17:58
  • Buenas tardes Leandro(Gracias por tomarte el tiempo de responder).

    Exacto es eso que quiero saber como validar si llego a la ultima fila para detenerlo(probe el ejemplo de codigo que indicaste y no lo detiene).

    Por que al ser una consulta a una base de datos que llena el datagridview no puedo parametrizar la cantidad de columnas para indicarle que si llega a tal numero que vuelva hacia atras.

    El movimiento que hago en el DataGridView es vertical es decir solo por columna pero una sola para ser especifico. me explico: la consulta trae 5 campos; ID,nombre, apellidos, numero, direccion y trae 5 resultados es decir 5 filas el movimiento es solo vertical cada vez que presiono el boton siguiente se desplaza una linea hacia abajo con respecto a la actual y solo se mueve mediante el ID es decir si esta en el ID 1 y presiono siguiente pasara al ID 2 y asi sucesivamente. Como te indique lo que quiero saber es como detener al usuario cuando llegue al final de los resultados.


    samuel

    lunes, 21 de enero de 2019 18:22
  • Buenas tardes, 

    cuando el Boton por el cual me muevo que el boton "Siguiente" cambia a enabled.true es por que cargo los resultados al datagridview la consulta que realice y automaticamente el cursor se ubica en la primera fila por ende no se a que te refieres con que esta fuera de rango.


    samuel

    lunes, 21 de enero de 2019 18:23