Bonjour à tous,
Sur une form, j'ai disposé un panel. Ce panel va contenir X panels dynamiquements créés.
Grâce aux évènements mouseMove de mon panel de base, je capte les mouvements de la souris.
Donc lorsque l'utilisateur maintient la touche ALT enfoncée et déplace la souris, cela à pour effet de déplacer les scroll du panel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 Private Sub pnlCompactus_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pnlCompactus.MouseMove If isKeyDown Then Dim DeltaX As Integer = (m_PanStartPoint.X - e.X) Dim DeltaY As Integer = (m_PanStartPoint.Y - e.Y) pnlContainer.AutoScrollPosition = _ New Drawing.Point((DeltaX - pnlContainer.AutoScrollPosition.X), _ (DeltaY - pnlContainer.AutoScrollPosition.Y)) End If End Sub Private Sub frmTestGraphique_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Menu Then m_PanStartPoint = pnlCompactus.PointToClient(Cursor.Position) isKeyDown = True End If End Sub Private Sub frmTestGraphique_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp If e.KeyCode = Keys.Menu Then m_PanStartPoint = Nothing isKeyDown = False End If End Sub
La ou j'ai un problème, c'est que cet event n'est pas catché sur les panel ajoutés dynamiquement dans mon panel de base.
Ce qui rend le déplacement surperflu car il faut absolument garder las ouris dans la zone panel non recouverte.
Est-il possible de catché l'event mouseMove au dessus de tout ET MEME en dehors de ma form?
Le but est de faire un déplacement similaire à celui dans Photoshop (barre d'espace + mouseMove)
L'idéal serait de capter le mouvement au niveau OS non?
Merci d'avance.
Partager