2009-10-07 7 views
0

La façon la plus simple de voir ce dont j'ai besoin est d'utiliser un exemple. Supposons que j'ai un DataGridView avec 20 lignes de données.Afficher la position affichée de la ligne DataGridView

Le DGV est dimensionné pour afficher 10 lignes à la fois. Il défile pour afficher les lignes 4-13. La rangée 7 est sélectionnée. Ce dont j'ai besoin, c'est d'un moyen d'obtenir que Row7 est la 4ème rangée affichée.

Répondre

1

Vous pouvez parcourir tous les DataGridViewRows dans une DGV et vérifier la propriété Displayed de chaque ligne. Lorsque vous trouvez que le premier est vrai, c'est votre première ligne affichée. Continuez à boucler et vérifier la propriété Selected de la ligne.

est ici un code de test:

int foundRowIndex = 0; 
bool foundFirstDisplayedRow = false; 
foreach (DataGridViewRow row in dataGridView.Rows) { 
    if (row.Displayed) { 
     foundFirstDisplayedRow = true; 
     Console.WriteLine(row.Cells[0].Value); 
    } 
    if (foundFirstDisplayedRow) { 
     foundRowIndex++; 
     if (row.Selected) { 
      // You've got what you need here in foundRowIndex. 
     } 
    } 
} 

En prime, vous pouvez vérifier la propriété affichée de la 7ème ligne pour vous assurer que l'utilisateur n'a pas fait quelque chose de fou, comme la taille de la DGV pour arrêter l'affichage.

+0

Cela fonctionne. J'espérais que leur était un moyen plus direct cependant. –

Questions connexes