IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Lecture bouton depuis MouseDown ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Homme Profil pro
    Auteur logiciels et romans
    Inscrit en
    Février 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auteur logiciels et romans
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2009
    Messages : 203
    Par défaut Lecture bouton depuis MouseDown ?
    Bonjour,

    En vbnet2008 sous Vista32 PC, je cherche à identifier le bouton dans un évènement MousDown, j'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub PictureBox2_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox2.MouseDown
        Dim bouton As Long
        bouton = Mid(e.Button, 1, 1)
      End Sub
    Je me demande si c'est universel, en fait ça fonctionne car le premier chiffre que renvoie est celui du bouton, alors à votre avis, est-ce exploitable de façon sure, et sinon pourquoi (évidemment) ?

    Merci, codialement.

    Joe.
    .

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    c'est un peu du n'importe quoi
    e.button est une enum (énumaration)
    ca sert à identifier un valeur numérique de facon plus certaine


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If e.Button = Windows.Forms.MouseButtons.Left Then
        ' c'est le bouton gauche
    End If

    une chose de plus que tu aurais pu apprendre en lisant un tuto ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Inactif
    Homme Profil pro
    Auteur logiciels et romans
    Inscrit en
    Février 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auteur logiciels et romans
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2009
    Messages : 203
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    c'est un peu du n'importe quoi
    e.button est une enum (énumaration)
    ca sert à identifier un valeur numérique de facon plus certaine


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If e.Button = Windows.Forms.MouseButtons.Left Then
        ' c'est le bouton gauche
    End If

    une chose de plus que tu aurais pu apprendre en lisant un tuto ...
    Bonjour,

    Merci, toutefois il y a longtemps que j'ai vu la façon de tester e.bouton et une énumération est une liste de constantes censées être logiquement reliées pour des raison organisatonnelles, alors :

    D'une part, non, je ne trouve pas l'expliction des valeurs de ces constantes, et si je le trouvais je pourrais faire un code plus court.

    D'autre part, puisque ce sont des sonstantes, elle ne sont pas censées varier, il en résulte que les réponses (e.bouton):
    boutonG(1) = 1048576
    boutonM(4) = 4194304
    boutonD(2) = 2097152
    peuvent sans doute être prises en leur premier nombre, comme celui du bouton, eh oui, il suffit d'observer...

    Donc tu soutiens que c'est une énumération, donc une constante, donc qu'une contante n'est pas variable, mais que néanmoins il ne faut pas prendre le premier nombre comme valeur du bouton, et pourquoi ?

    Alors, par contre, ce que tu peux m'expliquer aussi, qui ne se trouve pas dans les tutoriels, c'est pourquoi le système génère ces valeurs, leur construction et leur signification éventuelle, ceci me serait utile, dans l'attente d'une faq VBnet de Microsoft ?

    Cordialement.

    Joe.
    .

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    je comprends rien à ce que tu racontes
    si tu veux la valeur numérique, tu fais cint(valeur d'énumération)
    mais ca ne sert à rien, autant garder la valeur en tant qu'énumération !
    tu peux très bien déclarer une variable sous ce type d'énum plutot que sous forme d'entier

    et puis par définition, une énumération n'est pas une constante ...
    dans le framework, certes ca n'évolue pas, mais dans le cas d'une dll tiers,
    un développeur peut très bien changer les numéros des valeurs, et dans ce cas il n'y a pas d'impact pour les propriétés sérialisées par le designer par exemple (vu que c'est enregistré sous la forme propriété = enumeration)
    (pour une sauvegarde en base par contre on garde généralement la valeur sous forme d'entier et là ca casse tout)


    certaines enums sous fait sous forme de puissance de 2, ca permet d'avoir plusieurs valeurs stockées en une seule, dans ce cas il faut faire du traitement binaire pour la décomposition
    c'est apparement le cas de l'énumartion button, on peut certes faire clic gauche ou clic droit, mais ou peut faire les 2 en meme temps, dans ce cas la valeur de button est une addition des 2 valeurs d'énum, et pour tester il faut faire des masques binaires

    pour savoir si le clic gauche est enfoncé, on fait if = left, mais pour savoir si le clic gauché est cliqué même si le clic droit l'est en meme temps, on fait
    If (enum And Windows.Forms.MouseButtons.Left) = Windows.Forms.MouseButtons.Left Then
    le ET logique retourne un variable dont tous les bits sont égaux

    c'est pour ca que les enums ne sont pas toujour 0 1 2 3 4 etc... pour faire du binaire il faut de la puissance de 2 : 0 1 2 4 8 16 ... ou 1048576 2097152 etc...
    pour e.button il peut très bien valoir 3145728 alors qu'aucune valeur de l'énum n'a cette valeur


    ca doit surement répondre à ta question
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/01/2008, 15h37
  2. Réponses: 6
    Dernier message: 30/10/2007, 15h04
  3. action d'un bouton depuis un autre swf
    Par mascagne dans le forum Flash
    Réponses: 5
    Dernier message: 06/06/2007, 10h51
  4. [Tableaux] Problème lecture RSS depuis PHP
    Par naivenu dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2006, 22h37
  5. Dimension bouton depuis fenêtre non parente
    Par qi130 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 25/04/2006, 15h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo