System.argumentoutofrangeexception: ‘el índice estaba fuera de rango. Debe ser no negativo y menor que el tamaño de la colección. Nombre del parámetro: índice’

programación


private void ItemGV_CellClick(object sender, DataGridViewCellEventArgs e)
       {
           if (e.RowIndex >= 0)
           {
               txtItemnum.Text = ItemGV.SelectedRows[0].Cells[0].Value.ToString();
               txtItemname.Text = ItemGV.SelectedRows[0].Cells[1].Value.ToString();
               comboCat.SelectedItem = ItemGV.SelectedRows[0].Cells[2].Value.ToString();
               txtitemprice.Text = ItemGV.SelectedRows[0].Cells[3].Value.ToString();
               //txtemail.Text = UserGV.SelectedRows[0].Cells[4].Value.ToString();
           }

Lo que he probado:

Al hacer clic en el evento, estoy escribiendo el código para obtener los valores de la cuadrícula en el cuadro de texto.

Solución 1

No podemos decirle “¡Está ahí!” porque necesitaríamos que su código se ejecute con sus datos para descubrir exactamente dónde está sucediendo y qué valores están causando el problema, y ​​lo necesita antes de poder comenzar a buscar. por qué ¡Está incorrecto!

Todo lo que podemos hacer es explicar por qué está causando un problema. Las matrices en C# son una secuencia de valores a los que se accede a través de un índice: y ese índice debe estar entre cero y el “número de valores menos uno”. Entonces, si tiene una matriz que contiene cinco números enteros, por ejemplo, entonces los índices válidos son 0, 1, 2, 3 y 4. Todos los demás índices darán un error porque el valor que está intentando manejar no existe.
Entonces puedes decir:

C#
i = arr[0];
i = arr[1];
i = arr[2];
i = arr[3];
i = arr[4];

Pero no:

C#
i = arr[-1];
i = arr[5];
i = arr[666];

Y su código utiliza varias matrices, cualquiera de las cuales podría ser la fuente del problema.

Entonces, dependerá de ti.
Afortunadamente, tienes una herramienta a tu disposición que te ayudará a descubrir qué está pasando: el depurador. Si no sabe cómo usarlo, una búsqueda rápida en Google para “depurador de Visual Studio” debería brindarle la información que necesita.

Coloque un punto de interrupción en la primera línea de la función y ejecute su código a través del depurador. Luego mire su código y sus datos y determine qué debería suceder manualmente. Luego, realice un solo paso en cada línea para verificar que lo que esperaba que sucediera sea exactamente lo que sucedió. Cuando no es así, es cuando tienes un problema y puedes retroceder (o ejecutarlo nuevamente y observar más de cerca) para descubrir por qué.

Supongo que la colección SelectedItems está vacía o no hay suficientes columnas en la cuadrícula, pero necesita que su código se ejecute con sus datos para saberlo.

Lo sentimos, pero no podemos hacer eso por usted. Es hora de que aprenda una habilidad nueva (y muy, muy útil): ¡depurar!

コメント

タイトルとURLをコピーしました