C#: Sélectionnez la ligne de DataGridView
J'ai un formulaire avec un DataGridView (3 colonnes) et d'un Bouton. Chaque fois que l'utilisateur clique sur un bouton, je veux récupérer les valeurs stockées dans la 1ère colonne de la ligne.
Voici le code que j'ai:
private void myButton_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in ProductsGrid.Rows)
{
if (this.ProductsGrid.SelectedRows.Count == 1)
{
//get information of 1st column from the row
string value = this.ProductsGrid.SelectedRows[0].Cells[0].ToString();
}
}
}
Cependant quand je clique sur myButton, le cette.ProductsGrid.SelectedRows.Le comte est de 0. Aussi, comment puis-je m'assurer que l'utilisateur sélectionne une seule ligne et non pas de plusieurs lignes?
Le code de regarder à droite?
- Vous n'avez pas besoin d'effectuer une itération (foreach) sur toutes les lignes de la grille de données pour obtenir uniquement la première SelectedRow. La boucle foreach est une perte de temps ici.
Vous devez vous connecter pour publier un commentaire.
Ensemble DataGridView.MultiSelect=false et DataGridView.SelectionMode = FullRowSelect. De cette manière, l'utilisateur ne peut sélectionner qu'une seule ligne à la fois.
SelectedRows renvoie uniquement les lignes si la totalité de la ligne est sélectionnée (vous pouvez activer RowSelect sur le datagridview, si vous voulez). La meilleure option est d'aller avec
SelectedCells
Bien, vous n'avez pas besoin à la fois de parcourir toutes les lignes de votre grille et accéder à la collection de SelectedRows. Si vous passez iteratating et l'utilisation de la SelectedRows collection, alors votre problème est probablement une mauvaise SelectionMode:
(à partir de MSDN)
Vous pouvez faire référence à la grille similaire à un tableau:
En sélectionnant l'index à partir de la première index de la SelectedRowsCollection et SelectedColumnsCollection vous allez saisir la première valeur si plusieurs lignes sont sélectionnées.
Vous pouvez verrouiller l'utilisateur de sélectionner une seule ligne par le réglage de la
MultiSelect
de propriété sur le DataGridView. Sinon, vous faites leCellClick
événement:SelectedRows.Count
retourne le nombre de lignes entières qui sont actuellement sélectionnés. Vous voudrez probablement utiliserSelectedCells.Count
.vous pouvez également utiliser le
.BoundItem