Précédent   Forum du club des développeurs et IT Pro > Dotnet > Développement Windows > Windows Forms
Windows Forms Forum d'entraide sur le développement Windows Forms & Applications Windows. Avant de poster -> Articles Windows Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/04/2010, 22h24   #1
olibara
Membre Expert
 
Mangeur de gauffre
Inscription : octobre 2007
Messages : 4 137
Détails du profil
Informations professionnelles :
Activité : Mangeur de gauffre

Informations forums :
Inscription : octobre 2007
Messages : 4 137
Points : 2 232
Points : 2 232
Par défaut Connaitre la position d'une cellule de DataGridView

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)
olibara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2010, 23h43   #2
Graffito
Expert Confirmé Sénior
 
Avatar de Graffito
 
Inscription : janvier 2006
Messages : 5 390
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 5 390
Points : 6 036
Points : 6 036
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
Graffito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2010, 09h30   #3
olibara
Membre Expert
 
Mangeur de gauffre
Inscription : octobre 2007
Messages : 4 137
Détails du profil
Informations professionnelles :
Activité : Mangeur de gauffre

Informations forums :
Inscription : octobre 2007
Messages : 4 137
Points : 2 232
Points : 2 232
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 :
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)
olibara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2012, 20h01   #4
deuxmains
Membre du Club
 
Philippe Le Trividic
Inscription : avril 2008
Messages : 51
Détails du profil
Informations personnelles :
Nom : Philippe Le Trividic
Âge : 40

Informations forums :
Inscription : avril 2008
Messages : 51
Points : 54
Points : 54
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

Code :
label.Location = dgvPlanning.GetCellDisplayRectangle(col, ligne, True).Location
cela permet de situer la cellule directement par rapport au datgridview et ça m'a bien arrangé

voila si cela peut aider d'autres qui se posent la même question

bonne continuation.
deuxmains est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 18h53.


 
 
 
 
Partenaires

Hébergement Web