2009-07-23 7 views
0

Mon application fonctionne comme un plugin dans une autre application fenêtrée. Ainsi, ma fenêtre n'a souvent pas le focus. Maintenant, si quelqu'un déplace la souris sur un bouton/menu et clique une fois, tout ce qu'il fait est de mettre le focus sur ma fenêtre. Puis (s) il doit cliquer à nouveau pour obtenir la fonctionnalité réelle du bouton.Comment répéter un clic de souris dans .NET

Ceci est une gêne mineure mais j'aimerais m'en débarrasser. J'ai d'abord essayé de revendiquer la focalisation chaque fois que la souris entre dans mon espace de dialogue, mais cela s'est avéré être encore plus ennuyeux. Donc, ce que je voudrais faire est de répéter le clic de la souris, il semble donc qu'un simple clic à la fois changé de focus ET appuyé sur le bouton.

Évidemment, je ne devrais le faire que lorsque le clic a abouti dans un SetFocus, sinon il va exécuter la fonction du bouton deux fois.

Des suggestions?

profondément et éternellement redevable, David

Répondre

1

simulation souris clic semble un peu désordonné, mais vous pouvez toujours simuler chaque clic de souris à tout (X, Y) via le SendInput API par P/Invoke:

[DllImport("user32.dll", SetLastError=true)] 
static extern uint SendInput(uint nInputs, INPUT [] pInputs, int cbSize); 

Vous pouvez également bricoler avec la propagation/Générer des messages WM_MOUSEXXXXX directement mais j'ai beaucoup joué avec ça et croyez moi quand je dis que c'est un kludge total.

+0

Merci, je vais expérimenter avec ceux-ci. –

1

Je vous suggère de garder le comportement est; Il s'agit d'un comportement standard pour le système d'exploitation et sa modification pourrait enfreindre les consignes d'utilisation standard.

+0

Point pris, je n'aime pas non plus sortir des conventions de l'interface utilisateur, mais le comportement conventionnel * est * ennuyeux. –

Questions connexes