VB6 zone de liste et Cliquez sur DblClick
J'ai besoin d'exécuter un code différent quand un utilisateur clique ou double-clique sur un élément dans une VB6 contrôle ListBox. Quand je clique sur le contrôle, le gestionnaire d'événements Click exécute. Cependant, j'ai constaté que lorsque je double-cliquez sur le contrôle, à la fois le Clic et Double clic gestionnaires d'événements exécuter.
Que quelqu'un a une bonne solution pour obtenir juste le Double code de gestionnaire d'événements pour fonctionner sans Cliquer sur un code exécuté en premier?
Merci d'avance pour toutes les suggestions.
Vous devez vous connecter pour publier un commentaire.
Une légère hack, mais vous pouvez utiliser un contrôle Timer et une variable booléenne:
Je vous recommande le réglage de la minuterie d'intervalle pour les Fenêtres double-cliquez sur réglage de l'heure, plus un peu (Il devrait y avoir un appel d'API Windows qui va vous donner cette valeur).
Le comportement de la liste de contrôle en Visual Basic 6 est comme suit.
Lorsque vous cliquez sur un élément, cliquez sur l'événement est déclenché.
Lorsque vous cliquez sur l'objet MÊME de l'événement click est encore tiré.
Lorsque vous double-cliquez sur l'élément à la fois l'événement de clic et double-cliquez sur l'événement sont licenciés.
Note #2. Ce que vous devez faire est d'avoir un élément courant dans la forme que vous travaillez avec. Chaque fois que l'événement click est cochée, vous voyez d'abord si l'élément courant est le même élément que vous avez cliqué. Si ce n'est PAS le même élément de processus pour l'événement click normalement.
Si vous double-cliquez sur un NOUVEL Élément, puis l'utilisateur est en train de faire deux choses en même temps. La sélection d'un nouveau poste et effectuer le double-clic sur l'élément. Dans ce cas, le clic est tiré en premier, alors le "double clic".
Cette séquence n'est pas différent que si le contrôle fait ce que vous vouliez. C'est le même que si vous avez cliqué sur un nouveau point d'attente X deuxième double-cliquez ensuite sur le même élément.
Si votre événement click implique de passer au large de la tâche à un ActiveX EXE et immédiatement la résiliation ou du paramètre de données devant être traitées plus tard par un arrière-plan de la minuterie. Ensuite, vous devez avoir un sémaphore ou un drapeau pour indiquer lorsque le processus engendré par l'événement click est fait. Le "Double Clic" de l'événement ne sera pas traitée jusqu'à ce que le sémaphore est désactivée.
Si vous avez d'autres détails de ma réponse peut être plus précis. Voici un peu de code, vous pouvez exécuter pour voir la Zone de Liste dans les actions. Créer un Formulaire et ajouter trois points à la liste. Puis ajoutez le code ci-dessous.
Faire les étapes suivantes
Vous permettra de voir les différentes combinaisons d'actions qui se produisent.