Datagrid + Event MouseDown

Résolu
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009 - 22 nov. 2006 à 14:19
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009 - 8 janv. 2007 à 21:31
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

cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
28 nov. 2006 à 13:22
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....
3
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
22 nov. 2006 à 14:51
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....)
0
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
23 nov. 2006 à 22:13
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
0
cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
25 nov. 2006 à 01:57
De mémoire il y'a des evenements du genre OnCellSelected,OnRowSelected....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
27 nov. 2006 à 21:47
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
0
cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
28 nov. 2006 à 09:51
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).
0
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
28 nov. 2006 à 12:38
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
0
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
28 nov. 2006 à 13:24
ok super merci je vais tout dfe suite le mettre en application
Merci de ton aide

sandra
0
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
8 janv. 2007 à 21:31
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
0
Rejoignez-nous