Datagrid + Event MouseDown

Résolu
Signaler
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009
-
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009
-
salut,
jai un petit soucis avec mon datagrid, qd l'event MouseDown de mon datagrid se declenche apres avoir clické sur une ligne de mon datagrid, je narrive pas a determiner l'index de la ligne selectionnee; jusqua present j'utilisait datagrid.CurrentRowIndex ou bien datagrid.CurrentCell.RowNumber mais lun comme lautre me donnent toujours la row 0;
Quelqu'un aurait-il une solution pour connaitre la ligne selectionnee?
sandra

9 réponses

Messages postés
268
Date d'inscription
samedi 22 février 2003
Statut
Membre
Dernière intervention
24 avril 2013
3
Un petit exemple de HitTest :

//récupération des infos de test

DataGrid.
HitTestInfo HTInfo = dataGrid1.HitTest(5, 5);

//On vérifie si le click est sur une ligne du datagrid
if (HTInfo.Type ==
DataGrid.
HitTestType.Cell || HTInfo.Type ==
DataGrid.
HitTestType.RowHeader)
{

   //On Selctionne la ligne
   dataGrid1.CurrentRowIndex = HTInfo.Row;
}

Tu met ca dans ta fonction qui gére MouseDown, et tu remplace par les coordonnées de l'emplacement de la souri....
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
18
sur le mousedown, ta ligne n'est pas encore sélectionnée....cest donc normal que tu ne puisse pas la récupérer. selon ce que tu veux faire, tu as les event validating (lorsque tu quitte la cellule), CurrentCellChanged quand la valeur dune cellule a changér, etc....
bref, tout dépend de ce que tu veux faire (en plus travailler sur le mousexxx est pas tres propre....mais si tu veux quand meme travailler avec ca, travaille soit sur le mouseup soit sur click, mais surtout pas sur le down....regarde nimporte quel composant, si ton control recoit le down mais pas le up, il ne réagit pas...essaie sur un bouton en clickant, maintenant le click et relachant en dehors de la zone du controle....)
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

alors en gros si jutlise le MouseUp tu penses que je pourrais recupere la valeur de ma ligne?
Sinon quesque je peux faire, en fait jai besoin de ces evenements car jutilise le Drag&Drop; lorsque lutilisateur drag une ligne dun datagrid a un autre jai besoin de connaitre la ligne choisie

sandra
Messages postés
268
Date d'inscription
samedi 22 février 2003
Statut
Membre
Dernière intervention
24 avril 2013
3
De mémoire il y'a des evenements du genre OnCellSelected,OnRowSelected....
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

en fait je ne sais pas comment faire autrement, je dois utiliser la mouseDown pour pouvoir faire drag and drop dun datagrid a un autre, ave le MouseUp ca ne marche pas, deplus je ne trouve pas de fonction OnCellSelected,OnRowSelected, aurait tu une solution a mon pb?

sandra
Messages postés
268
Date d'inscription
samedi 22 février 2003
Statut
Membre
Dernière intervention
24 avril 2013
3
C'est quel version de VB(VB6,VB.NET,VB2005) ? peut tu nous donner le  code qui te pose probleme.

vérifie si il n'y'a pas de méthode Hittest qui permet de determiner ce qui se trouve au coordonée x,Y du controle(en lui passant les coordonées du click).
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

je ne suis pas sur VB; jutilise C# 2003, en effet jutilise aussi la methode Hittest mais peut tu maiguiller un peu plus?
comment grace aux coordonnees je peux determiner la ligne ?, a vrai dire jy avais deja pense mais je nai pas d'idee sur la facon de passer d'une coordonee au numero de la ligne.
je vais tout de meme chercher encore, mais si tu pouvais maider ca serai encore mieux

sandra
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

ok super merci je vais tout dfe suite le mettre en application
Merci de ton aide

sandra
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

salut,


je mexcuse mais jaurai encore une petite question,


en fait je voudrai trouver le numero de la li_gne en fonction de la position de ma souris


dans ton exemple tu te base sur une cellule, en fait tu sais deja de quelle cellule il sagit, seulement moi je nai que la position de ma souris et a partir de ca je voudrai connaitre la ligne.


jusqua present jutilisait le code suivant:



System.Drawing.Point pt = tab[ tabNum ].PointToClient(Cursor.Position);





DataGrid.HitTestInfo hti = tab[ tabNum ].HitTest(pt);





tab[tabNum].CurrentRowIndex = hti.Row;







seulement hti.Row reste toujours a -1 donc forcement ca bug... quesque je peux faire?

sandra