Système.ArgumentOutOfRangeException s'est produite dans mscorlib.dll C#
J'ai un DataGridView qui je suis remplissage à partir d'une liste d'objets. Cependant mon 2ème boucle dans mon foreach
résultats dans un ArgumentOutOfRangeException
.
Voici mon code:
foreach (Abonat abonat in list.getAbonati())
{
dataGridView1.Rows[i].Cells[0].Value = abonat.id; //exception occurs here on second loop
dataGridView1.Rows[i].Cells[1].Value = abonat.prenume;
dataGridView1.Rows[i].Cells[2].Value = abonat.nume;
dataGridView1.Rows[i].Cells[3].Value = abonat.adresa;
i++;
}
La première fois le foreach
fonctionne, tout va bien, il montre même dans le DataGridView, mais la 2ème fois, j'ai l'exception (en fait, il dit Une exception de première chance de type 'System.ArgumentOutOfRangeException' s'est produite dans mscorlib.dll) et mon formulaire est affiché, sans courir le reste de la boucle foreach.
Toute aide à ce sujet? J'ai essayé de l'instanciation de la dataGridView1.Rows[i] = new DataGridViewRow();
mais elle est en lecture seule.
- Il devrait y avoir un message de l'exception, il n'est pas très utile sans que. Quelle est la valeur de
i
? - Vous n'avez pas nous a montré où vous définissez/incrément je.
i
est 0 au début et à 1 lorsque le "possible" exception se produit.- Quelle est la valeur de
Rows
lors de l'exécution de ce code? Peut-être qu'il n'a pas autant de lignes que vous pensez qu'elle a? Je ne sais pas quand ce code fonctionne, donc je ne peux que spéculer. Peut-être que la grille a rendu et est vide ou ne contient qu'une seule ligne? Pourquoi, en particulier, êtes-vous en boucle comme ceci à la place de la liaison de données pour le contrôle? - Vous avez probablement oublié d'ajouter la ligne en premier, dataGridView1.Les lignes.Ajouter();
- ne devrait-elle pas avoir autant de lignes que je veux? Je veux dire que je ne suis pas définir le nombre de lignes n'importe où, donc peut-être qu'il a seulement 1. Dans ce cas, comment puis-je ajouter une autre ligne? Je suis en boucle comme ça, parce que c'est le seul moyen rapide je sais comment le faire.
- Utilisation
dataGridView1.Rows.Add()
. Vous pouvez voir en action ici: msdn.microsoft.com/en-us/library/... - Qu'il a été. Merci @HansPassant et rsbarro
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour créer des lignes avant d'essayer d'y accéder;
Ensuite, vous serez en mesure d'y accéder via dataGridView1.Les rangées[n].Les cellules[0].Valeur = x;
Acclamations
Ajouter ce qui suit au-dessus de votre code
dataGridView1.ColumnCount = 4;
dataGridView1.ColumnHeadersVisible = true;
Vous ne pouvez pas ajouter de cette façon. Pour commencer, il n'est pas de savoir ou défini mais alors, vous l'incrémenter. Vous pouvez ajouter autant de lignes que vous voulez, mais vous ajoutez incorrecte est ce que nous essayons de vous dire.
utilisation incorrecte ici: dataGridView1.Les lignes[i].Les cellules[0].Valeur = abonat.id;