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

Windows Forms Discussion :

Sortir un control à la souris


Sujet :

Windows Forms

  1. #1
    Membre à l'essai

    Inscrit en
    Novembre 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2013
    Messages : 11
    Points : 12
    Points
    12
    Billets dans le blog
    1
    Par défaut Sortir un control à la souris
    Bonjour,

    L'utilisateur de mon programme (une barre d'outils) fait en VB 2010 Express doit pouvoir supprimer un contrôle du formulaire en l'en sortant à la souris.

    Dans le détail :
    - pour le tester et trouver la solution, mon programme est constitué seulement d'un formulaire contenant lui, un seul contrôle (un bouton)

    - je sais déclencher le déplacement de ce bouton (drag) par l'événement Button_MouseMove : sender.DoDragDrop(sender.Text, DragDropEffects.Move)

    - je sais détecter l'événement "sortie du formulaire" : DragLeave

    - je sais vérifier si la souris se trouve hors du formulaire :
    Dim CP As New Point(Cursor.Position) ' coordonnées de la souris à l'écran
    SourisEstDehors = CP.X < Left Or CP.Y < Top Or CP.X > Left + Width Or CP.Y > Top + Height

    - je ne sais pas détecter le relachement du bouton de la souris à l'extérieur du formulaire

    Questions :
    - n'y a-t-il pas d'autre moyen qu'un Hook (lequel représente de nombreuses lignes de programme et des risques de plantage du PC) Je sais MicrosSoft assez malin pour avoir fourni une instruction simple.
    - en VB 5, l'objet déplacé était représenté par une forme de la même taille (un label qu'on dimensionnait à cet effet) Ne peut-on faire la même chose en VB 2010 ? (par DoDragDrop, la souris est accompagnée d'un + ou/et d'un petit carré)

    Vous remerciant par avance pour votre aide.

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    et bienvenu sur nos forums !

    Pourquoi pas supprimer le bouton au moment où la souris est justement hors formulaire, si déjà tu arrives à détecter sa sortie ! Après tu n'as plus besoin de t'inquiéter pour le reste

    Après j'ai trouvé ceci si ça peut t'aider:
    Si une modification de l'état du clavier ou du bouton de la souris se produit, l'événement QueryContinueDrag se déclenche et détermine s'il faut continuer l'opération glisser, déplacer les données ou annuler l'opération en fonction de la valeur de la propriété Action de l'événement QueryContinueDragEventArgs.
    • Si la valeur de DragAction est Continue, l'événement DragOver est déclenché pour poursuivre l'opération et l'événement GiveFeedback est déclenché avec le nouvel effet, pour fournir une rétroaction visuelle appropriée. Pour obtenir la liste des effets d'opérations déplacer valides, consultez l'énumération DragDropEffects.
    • Remarque:
      • Les événements DragOver et GiveFeedback sont associés de telle sorte que lorsque la souris se trouve sur la cible de déplacement, l'utilisateur reçoit les commentaires les plus actuels sur la position de la souris.
    • Si la valeur de DragAction est Drop, la valeur de l'effet de déplacement est retournée à la source. Ainsi, l'application source peut effectuer l'opération appropriée sur les données sources : par exemple, couper les données si l'opération était un déplacement.
    • Si la valeur de DragAction est Cancel, l'événement DragLeave est déclenché.
    La source: http://msdn.microsoft.com/fr-fr/libr...code-snippet-1
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre à l'essai

    Inscrit en
    Novembre 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2013
    Messages : 11
    Points : 12
    Points
    12
    Billets dans le blog
    1
    Par défaut
    1) Merci pour le "salut" c'est sympa

    2) > supprimer le bouton au moment où la souris est justement hors formulaire
    Ca ne convient pas : si l'utilisateur sort par mégarde de la feuille avec l'objet ou bien s'il change d'avis et veut remettre le bouton...

    3) je vais étudier de près la seconde solution

    4) question subsidiaire : comment, lors du "drag" montrer une image (à la place du "+" (add) ou du carré (move) s'il vous plaît ?

    Info :
    - mon programme (déjà partiellement opérationnel) consiste en un jeu de barres d'outils bureau comparables à celles qu'on trouve sur XP (sur XP : mettre des raccourcis dans un dossier, approcher ce dernier d'un bord du bureau, on obtient une barre d'outils)
    - J'ai lu sur Internet que les barres d'outils du type XP manquent beaucoup à pas mal de monde.
    - je sais que divers programmes existent, mais vous savez...
    - Je veux bien placer mon programme sur votre site, mais où et comment, that is the kwestione -)

    PS : est-ce normal, suis-je le seul dans ce cas, que je ne comprenne RIEN à la doc msdn (vb 2010 par exemple) ? Je ne parle pas seulement de votre lien

  4. #4
    Membre à l'essai

    Inscrit en
    Novembre 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2013
    Messages : 11
    Points : 12
    Points
    12
    Billets dans le blog
    1
    Par défaut Ca marche, merci !
    Il fallait vraiment que l'utilisateur lâche l'outil déplacé hors du formulaire (barre d'outils) Soit, chronologiquement :
    - clic sur l'outil
    - déplacement de la souris sans lâcher son bouton
    - sortie de la souris (avec l'outil) hors de la fenêtre
    - relâchement du bouton de la souris, souris hors fenêtre

    Je ne détaille pas tout (mais s'il le fallait...) Seulement la dernière étape :

    Private Sub flp_QCD(ByVal sender As Object, ByVal e As System.Windows.Forms.QueryContinueDragEventArgs)
    ' le Handles est mis lors de la création du bouton (outil) par code
    ' AddHandler Outil.QueryContinueDrag, AddressOf flp_QCD

    Dim CP As New Point(Cursor.Position) ' coordonnées de la souris par rapport à l'écran

    If e.Action = 1 Then ' l'outil a été relâché (sinon, 0)
    ' la souris est-elle hors de la fenêtre ?
    If CP.X < Left Or CP.X > Left + Width Or CP.Y < Top Or CP.Y > Top + Height Then ' oui
    Text = Environment.TickCount & " bouton sorti"
    Text = "merci Franck de 'developpez.net' !"
    End If
    End If
    End Sub

    Merci pour votre aide, question suivante -))

  5. #5
    Membre à l'essai

    Inscrit en
    Novembre 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2013
    Messages : 11
    Points : 12
    Points
    12
    Billets dans le blog
    1
    Par défaut oups, un bug, un de plus -(
    le IF...THEN est faux, il fallait écrire :

    If (CP.X < Left Or CP.X > Left + Width) And (CP.Y < Top Or CP.Y > Top + Height) Then

    Merci

  6. #6
    Membre à l'essai

    Inscrit en
    Novembre 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2013
    Messages : 11
    Points : 12
    Points
    12
    Billets dans le blog
    1
    Par défaut euh, hum...
    non, finalement c'était juste, un OR, pas un AND
    -(

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/06/2010, 09h56
  2. Controler la souris sous linux "comme" win32.dll
    Par openmind38fr dans le forum GTK+ avec Python
    Réponses: 0
    Dernier message: 13/10/2009, 14h44
  3. Mon programme veut controler la souris PARTOUT
    Par nemohck dans le forum Windows
    Réponses: 2
    Dernier message: 26/08/2009, 11h08
  4. Réponses: 2
    Dernier message: 29/12/2008, 21h04
  5. Controler la souris avec un gamepad
    Par RLX dans le forum Windows
    Réponses: 9
    Dernier message: 30/10/2008, 17h40

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