Bonjour
Quelqu'un sait-il comment on peut connaitre la location par rapport a la form d'une cellule de DataGridView dont on connait le Row et Column index ?
Merci
Bonjour
Quelqu'un sait-il comment on peut connaitre la location par rapport a la form d'une cellule de DataGridView dont on connait le Row et Column index ?
Merci
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)
Pour savoir si la cellule C est dans l'écran : Propriété "Displayed" de DataGridViewCell.
Si true, on a la première cellule visible en haut à gauche : F = MyDataGridView.FirstDisplayedCell
Ensuite, une simple soustraction entre C.ContentBounds et F.ContentBounds donnera la position relative de C par rapport à la Location du DGV.
Finalement, ajouter les Location des Controls parents, grand-parents, arrière ... du DGV (jusqu'à l'ancêtre de type Form - non compris).
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson
Merci Grafito
Ta methode est bonne mais pour la cause j'ai fini par trouver la bonne solution
Mon probleme etait d'ouvrir un dialogue positionné sous une cellule de DataGridview sur lequel un utilisateur a cliqué (cette cellulle est donc forcément visible)
Voici le code
Les deux astuces a noter (et ne pas oublier)
C'est
1- Control.PointToScreen
2- FormStartPosition (celui-ci tue car il n'est pas évident a capter )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 frmDtpFromTo dtp = new frmDtpFromTo(Fld.WhereString); Rectangle R = DgvK.GetCellDisplayRectangle(iCol, iRow, true); Point AbsLoc = DgvK.PointToScreen(R.Location); dtp.Location = AbsLoc; dtp.StartPosition = FormStartPosition.Manual; DialogResult Ok=dtp.ShowDialog();
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)
bonjour tous le monde,
deux ans plus tard ce code est toujours bon a prendre
par contre sous VS2010 il a finalement été beaucoup simple
cela permet de situer la cellule directement par rapport au datgridview et ça m'a bien arrangé
Code : Sélectionner tout - Visualiser dans une fenêtre à part label.Location = dgvPlanning.GetCellDisplayRectangle(col, ligne, True).Location
voila si cela peut aider d'autres qui se posent la même question
bonne continuation.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager