J'ai un formulaire avec dataGridView (de 3 colonnes) et un bouton. Chaque fois que l'utilisateur clique sur un bouton, je souhaite que les valeurs sont stockées dans la 1ère colonne de cette ligne.
Voici le code que j'ai: p>
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(); } } }
6 Réponses :
Sélectionnerie ne renvoie que les lignes si la ligne entière est sélectionnée (vous pouvez activer le RowSelect sur la DataGridView si vous le souhaitez). La meilleure option est d'aller avec sélectionnée de sélection code>
Eh bien, vous n'avez pas besoin de itérale à la fois sur toutes les lignes de votre réseau et accédez à la collection de la sélection de self. Si vous ignorez itération et utilisez la collection SELECTIONRSROWS, votre problème est probablement une sélection de sélection incorrecte: P>
La propriété de sélectionMode doit être définie à FullrownesLect ou à ronflerheerselect pour que la propriété sélectionne la propriété soit peuplé avec des lignes sélectionnées. P> blockQuote>
(de MSDN ) p>
sélectionnérows.count code> renvoie le nombre de lignes entières actuellement sélectionnées. Vous voulez probablement utiliser
sélectionnéCells.count code>. P>
Ensemble DataGridView.multiselect = Faux et DataGridView.SelectionMode = FullrowneLect. Cela le rendra pour que l'utilisateur ne puisse sélectionner qu'une seule ligne à la fois. P>
J'ai dû utiliser datagridview1.SelectionMode = DataGridViewSelectionMode.fullrowselect;
Vous pouvez faire référence à la grille similaire à un tableau:
ProductsGrid.ClearSelection(); ProductsGrid.Rows[e.RowIndex].Selected = true;
Vous pouvez également utiliser le .bounditem code> p>
Vous n'avez pas besoin de itérer (foreach) sur toutes les lignes du DataGrid pour obtenir uniquement la première sélection de sélection. La boucle de Foreach est une perte de temps ici.