[Compact Framework] Evenement MouseUp indisponible

Signaler
Messages postés
4
Date d'inscription
jeudi 11 août 2005
Statut
Membre
Dernière intervention
14 juin 2007
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
Bonjour,

Je développe sur Pocket PC sous Windows Mobile 5 et le Compact Framework 2.0.
Je viens de m'apercevoir que l'évènement MouseUp n'était pas pris en charge pour le controle Button.
J'ai essayé plusieurs alternative pour résoudre ce problème:
- caster mon "Button" en "Control" car Control prend en charge MouseUp
- superposer une picturebox (qui prend en charge MouseUp) sur mon boutton

Mais hélas, ces 2 "bidouilles" ne fonctionnent pas!

Si quelqu'un à une idée pour résoudre mon problème, je suis preneur!

Merci à vous,

Tom

7 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Salut, je ne suis pas habitué au dev sous compact framework.. Normalement on override la methode WndProc du control ou bien on implemente IMessageFilter, voir on  installe un hook bien que c'est un lourd juste pour un MouseUp, si toutes ces solutions ne sont pas disponiblent sous le compact framework..

Button b = new Button( );
b.Parent = this;
b.MouseDown += delegate
{
    while ( Control.MouseButtons != MouseButtons.None )
    {
        System.Threading.Thread.Sleep( 250 );
        Application.DoEvents( );
    }


    MessageBox.Show( "MouseUp !" );
};
Messages postés
4
Date d'inscription
jeudi 11 août 2005
Statut
Membre
Dernière intervention
14 juin 2007

Je te remercie de ton aide.
Ton idée d'override paraissait bonne.
Hélas je viens de m'apercevoir que la classe Message qui permet de manipluer les message issus de l'OS n'est pas disponible dans le CF.
C'est vraiment pas évident de développer dans cet environnement, il manque pas mal de truc bien utiles!

Du coup, je suis un peu à cours d'idées sur ce coup là....
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Et le code que je viens de donner ça ne convient pas ? Ca ne va pas tourner dans la boucle bien longtemps, l'utilisateur va bien finir par le lâcher ce bouton de souris,j'pense pas qu'il va le maintenir enfoncé toute une journée.
Messages postés
4
Date d'inscription
jeudi 11 août 2005
Statut
Membre
Dernière intervention
14 juin 2007

En fait, ce sont tous les évènements liés à la souris (MouseUp, MouseDown,...) qui ne sont pas pris en charge. Donc ton code ne résout hélas pas mon probleme.
Ce que je ne comprends pas, c'est que la classe Control dispose de ces évènements alors que la classe button, qui hérite de Control, n'en dispose pas!
Vraiment bizarre....
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Exact l'évènement MouseDown n'est pas disponible mais l'évènement Click lui l'est, suffit juste de modifier dans mon code le nom de l'évènement.
Messages postés
4
Date d'inscription
jeudi 11 août 2005
Statut
Membre
Dernière intervention
14 juin 2007

En effet, il y a l'évènement Click, mais cet évènement est déclenché apres avoir relaché le bouton (équivaut à un MouseDown + MouseUp).
Du coup il rentre dans le delegate seulement quand j'ai relaché le bouton, et il ne rentre pas dans ta boucle vu que les boutons de la souris sont relachés....
Je desespere....
Je suis en train d'essayer de fabriquer des boutons avec des picturebox,... (Les evenenements de la souris sont disponible sur ce controle!).
Mais je trouve ça vraiment curieux qu'ils les aient mis sur un PictureBox et pas sur un bouton !!!!

En tout cas, je te remercie quand meme de ton aide.

Tom
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
En effet, il y a l'évènement Click, mais cet évènement est déclenché apres avoir relaché le bouton ...


Ah mince, désolé, j'ai pas le CP d'installé mais j'avais pourtant testé avant sur le framework, ça marchait bien.