ListView DoubleClick & propriété Checked

Signaler
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
-
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
-
Bonjour,


Je rencontre un petit problème avec une Listview sur laquelle la propriété CheckBoxes est activée.


Lorsque j'effectue un double clic sur une ligne, la propriété Checked de l'item change automatiquement. Ce qui m'est fort désagréable.


En effet, je souhaite que la case ne se (dé)coche que lorsque l'on clique dessus. Le double clic sur la ligne doit avoir une tout autre action.


Avez-vous une solution SVP ?


Merci d'avance


Bonne prog
++

13 réponses

Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Salut,
et si tu la remettais à son etat initial ?
LV.Listitems(LaLigne).Checked=Not LV.Listitems(LaLigne).Checked

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
Salut,


Oui j'y ai pensé mais cela me pose quand même un problème car ces informations sont enregistrées dans une BDD :
   - le fait de cocher la case créé un enregistrement.
   - le fait de décocher la case supprime l'enregistrement.

Cela a pour principale conséquence de créer/supprimer ou supprimer/créer mon enregistrement avec à chaque fois l'index de cet enregistrement qui ne cesse de changer inutilement.

Bonne prog
++
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Recontournes le problème de l' enregistrement avec une booleanne.

Sub Enregistrer
 If Tata Then
    <Enregistrer>
End If
Ennd Sub

Sub LV_DblClick
  Tata=False
   LV.Listitems(LaLigne).Checked=Not LV.Listitems     (LaLigne).Checked

  Tata=True
End Sub

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
Salut,

J'y ai également pensé et j'ai bien essayé. Le problème est que l'evenement DoubleClick se déclenche après l'évenement ItemChecked même lorsque l'évenement ItemChecked est déclenché par un double clic.

Je suis donc dans l'impossibilité de savoir par avance si le changement d'état de la case à cocher provient d'un double clic.

Je voulais éviter, mais sans autre solution, je pense que je vais devoir sous-classer la ListView.

Si tu as une autre idée fais le moi savoir.

En tout cas merci de te pencher sur mon problème.

J'ai lu plusieurs topics sur d'autres sites de personnes qui ont le même problème, mais (de tout ceux que j'ai vus) aucun n'a obtenu de solution qui fonctionne.

Bonne prog
++
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
salut,

à tenter..., n'est-ce pas dû à la propriété FullRowSelect (ou équivalent) qui sélectionne tout la ligne plutôt que la case 1 ?
si oui, génant de mettre cette propriété à false?

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
Salut,

Je viens d'essayer de mettre la propriété FullRowSelect à False mais cela ne change rien.

Merci quand même pour la suggestion.

Bonne prog
++
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
Salut,

Merci à tous de vous être penché sur mon problème. Je viens de le résoudre par SubClassing.

Ainsi j'intercepte et je traite le doubleclic avant même que la LV soit au courant et je l'annule.

Bonne prog
++
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Excuses moi mais si tu traites le doubleclic avant même que la LV soit au courant et que tu l' l'annules
autant ne pas l' utiliser.
D' un autre coté tu dis que Le double clic sur la ligne doit avoir une tout autre action, alors comment tu y arrives si tu l' annules ?


T' as sûrement une explication.


Perso, moi ce qui m' interresse c' est ton code pour le subclassing.
Si tu pouvais m' en dire plus, ça serait gentil de ta part.
Merci.





<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
subclassing
=> une classe ou la form reçoit le DBL_CLICK (avant le raiseevent de la LV)
=> code voulu fait (c'était le 2ème but)
=> false dans la winproc, donc plus d'event par la LV donc plus de (dé)cochage (1er but)

après le subclassing en dotnet là j'sais pas ;)
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Salut PCPT et Merci.
Pour l' annulation du coche , j' ai cmpris.
Alors le "code voulu" doit-il être traité dans le module de classse, lors de l' interception; puisqu' il n' y a plus d' event dbl_click pour la LV ?
non ?

NB:Je ne suis pas fort en subclassing, c' est pourquoi je demande.

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
Pour le SubClassing en .NET : "trop simple". Aucun appel d'API direct, le Framework gère ça pour nous. Si simple qu'on en oublierai presque ce qui se passe en coulisse.

Libre_Max>>Pour résumer quand je double clic sur la LV, Windows est le premier au courant et il en informe ensuite ma LV. Avec le SubClassing, on a la possibilité d'intercepter le message avant qu'il n'arrive. On peut alors le traiter, le modifier, et même l'annuler.

Je prépare un post qui te permettra je l'espere de comprendre ce qui se passe. Et puis ce problème de DoubleClick étant fréquent il servira certainement à d'autres.

Bonne prog
++
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Bonsoir bouv et un grand MERCI de faire ça pour moi (ça profiera cerrtainement à d' autres) .Tu as parfaitement résumé et j' ai parfaitement compris les "dessous" du SubClassing.Ton post me servira certainement.Je travaille actuellement avec un MsFelgrid lié à une source de données que je voudrais gérer comme avec un DataGrid.
.
Merci encre.
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.     
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
Le projet est posté ici

Bonne prog
++