Est-il possible de gérer un événement mouseDown dans VB.Net (2008) quel que soit le contrôle qui déclenche l'événement mouseDown? Fondamentalement, je veux juste attraper un événement mouseDown au "niveau de la forme" et ne veux pas programmer les gestionnaires d'événements mouseDown dans chaque contrôle. Y a-t-il un moyen de faire cela?Gestion d'un événement MouseDown indépendamment du contrôle
Répondre
Ceci est très inhabituel, vous avez presque toujours vraiment soin de ce que le contrôle particulier a été cliqué. Et avoir un événement MouseDown qui prend une action spécifique, basée sur le contrôle cliqué. Mais vous pouvez, vous pouvez attraper les événements d'entrée avant qu'ils soient envoyés au contrôle lui-même. Vous devez utiliser l'interface IMessageFilter. Meilleur expliqué avec un exemple de code:
Public Class Form1
Implements IMessageFilter
Public Sub New()
InitializeComponent()
Application.AddMessageFilter(Me)
End Sub
Protected Overrides Sub OnFormClosed(ByVal e As System.Windows.Forms.FormClosedEventArgs)
Application.RemoveMessageFilter(Me)
End Sub
Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) As Boolean Implements System.Windows.Forms.IMessageFilter.PreFilterMessage
REM catch WM_LBUTTONDOWN
If m.Msg = &H201 Then
Dim pos As New Point(m.LParam.ToInt32())
Dim ctl As Control = Control.FromHandle(m.HWnd)
If ctl IsNot Nothing Then
REM do something...
End If
REM next line is optional
Return False
End If
End Function
End Class
Prenez garde que ce filtre est actif pour toutes les formes dans votre application. Vous aurez besoin de filtrer sur la valeur ctl si vous voulez la rendre spécifique à un seul formulaire.
Le problème auquel je suis confronté est que j'utilise un contrôle développé sur mesure. Il semble que pour une raison quelconque, la personne qui l'a écrite ne gère pas l'événement mouseDown car lorsque je gère l'événement mouseDown pour le contrôle, l'événement ne se déclenche jamais. – GregH
@GregH: cela sonne une cloche. Je vous ai déjà donné une solution pour cela: http://stackoverflow.com/questions/2609325/are-vb-net-eventargs-maintained-at-a-system-level –
L'événement 'MouseDown' se produit pour * toute * souris bouton, pas seulement pour le LMB, donc le code devrait également être ajusté pour cela. – mbomb007
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
'note - this will NOT work for containers i.e. tabcontrols, etc
For Each c In Me.Controls
Try
AddHandler DirectCast(c, Control).MouseDown, AddressOf Global_MouseDown
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
Next
End Sub
Private Sub Global_MouseDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs)
Debug.WriteLine(DirectCast(sender, Control).Name)
End Sub
- 1. WPF, Image MouseDown Événement
- 2. WPF: Adorner Hit Test/MouseDown Événement
- 3. Comment savoir si Shift est enfoncé dans un événement MouseDown?
- 4. Comment mettre un événement MouseDown dans un style?
- 5. Gestion d'Altivec charge et stocke indépendamment de l'endianness PPC?
- 6. Événement Mousedown avec compatibilité ipad/iphone? - jQuery Mobile
- 7. Comment lier un événement MouseDown image avec un RoutedUICommand
- 8. jquery hover événement entre mousedown et mouseup - possible?
- 9. contrôle serveur perte gestionnaire d'événements mousedown sur le rappel
- 10. contrôle événement propagation flex
- 11. Gestion du même événement dans plusieurs états dans Workflow Foundation
- 12. Comment charger des vues indépendamment du site.master?
- 13. Stockez les emplacements de mousedown
- 14. Déclenchement d'un draggable sur mousedown
- 15. mouseover while mousedown
- 16. Comment faire pour MouseDown après quelques secondes?
- 17. Comment puis-je configurer le contrôle des valeurs d'un contrôle répéteur indépendamment de leurs données
- 18. Gestion des ressources et suppression du contrôle de version
- 19. Quand un événement mousedown et mouseup ne correspond pas à un clic
- 20. Puis-je ajouter un événement de collage de liens sur mousedown dans jQuery?
- 21. faux avec un mousedown bouton gauche WPF
- 22. WPF - Gestion d'un événement RoutedEvent dans le parent pour une instance de contrôle spécifique
- 23. Exception dans la méthode mouseDown
- 24. Décrypter dont le contrôle a tiré un événement
- 25. Gestion de l'événement de contrôle ActiveX en C#
- 26. Ajout d'un événement au contrôle déclaré dynamiquement
- 27. Dans jQuery, comment faire pour qu'un événement mousedown() déclenche une fonctionnalité de boîte redimensionnable?
- 28. Comment l'algorithme STL fonctionne-t-il indépendamment du type Iterator?
- 29. RichTextBox SelectionChanged appelé avant MouseDown?
- 30. jQuery est mousedown sur mouseover
Est-ce dans Windows Forms ou WPF? –
Windows Forms (VB.Net/VS 2008) – GregH
Répétition de http://stackoverflow.com/questions/2609325/are-vb-net-eventargs-maintained-at-a-system-level –