Bonjour à tous,

J'ai sur ma form un panel contenant un autre panel plus grand.
Le pnlContainer affiche donc deux scrollbar pour naviguer le panel inclus dans celui-ci.

Via la capture de l'évènement keyUp, je suis capable de déplacer mes scroll de x unités à chaque pression sur cette touche avec le code suivant:

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 Private Sub frm_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
 
        Select Case e.KeyCode
 
            Case Keys.Up
                If Me.pnlContainer.VerticalScroll.Value < 10 Then
                    Me.pnlContainer.VerticalScroll.Value = 0
                Else
                    If Me.pnlContainer.VerticalScroll.Minimum >= Me.pnlContainer.VerticalScroll.Value - 10 Then
                        Me.pnlContainer.VerticalScroll.Value -= 10
                    Else
                        Me.pnlContainer.VerticalScroll.Value = 0
                    End If
                End If
 
            Case Keys.Down
                If Me.pnlContainer.VerticalScroll.Maximum >= Me.pnlContainer.VerticalScroll.Value + 10 Then
                    Me.pnlContainer.VerticalScroll.Value += 10
                Else
                    Me.pnlContainer.VerticalScroll.Value = Me.pnlContainer.VerticalScroll.Maximum
                End If
 
            Case Keys.Right
                If Me.pnlContainer.HorizontalScroll.Maximum >= Me.pnlContainer.HorizontalScroll.Value + 10 Then
                    Me.pnlContainer.HorizontalScroll.Value += 10
                Else
                    Me.pnlContainer.HorizontalScroll.Value = Me.pnlContainer.HorizontalScroll.Maximum
                End If
 
            Case Keys.Left
                If Me.pnlContainer.HorizontalScroll.Value < 10 Then
                    Me.pnlContainer.HorizontalScroll.Value = 0
                Else
                    If Me.pnlContainer.HorizontalScroll.Minimum >= Me.pnlContainer.HorizontalScroll.Value - 10 Then
                        Me.pnlContainer.HorizontalScroll.Value -= 10
                    Else
                        Me.pnlContainer.HorizontalScroll.Value = 0
                    End If
                End If
 
            Case Keys.Home
                Me.pnlContainer.VerticalScroll.Value = 0
                Me.pnlContainer.HorizontalScroll.Value = 0
 
            Case Keys.End
                Me.pnlContainer.VerticalScroll.Value = Me.pnlContainer.VerticalScroll.Maximum
                Me.pnlContainer.HorizontalScroll.Value = Me.pnlContainer.HorizontalScroll.Maximum
 
            Case Keys.PageUp
                If Me.pnlContainer.VerticalScroll.Value < 25 Then
                    Me.pnlContainer.VerticalScroll.Value = 0
                Else
                    If Me.pnlContainer.VerticalScroll.Minimum >= Me.pnlContainer.VerticalScroll.Value - 25 Then
                        Me.pnlContainer.VerticalScroll.Value -= 25
                    Else
                        Me.pnlContainer.VerticalScroll.Value = 0
                    End If
                End If
 
            Case Keys.PageDown
                If Me.pnlContainer.VerticalScroll.Maximum >= Me.pnlContainer.VerticalScroll.Value + 25 Then
                    Me.pnlContainer.VerticalScroll.Value += 25
                Else
                    Me.pnlContainer.VerticalScroll.Value = Me.pnlContainer.VerticalScroll.Maximum
                End If
 
        End Select
 
    End Sub
Ca fonctionne pas trop mal mais la barre de défilement ne réagitz pas à chaque pression sur une touche.
A priori il ne réagit qu'une fois sur deux.
Y a-t-il une autre méthode pour faire du scroll via mon code?
Les refresh, invalidate et autres update ne changent rien.

Ma seconde question est de savoir s'il est possible de capter les events pour les touches du pavé directionnel ailleurs que dans keyUp?
J'ai beau essayé, seul le keyUp réagit à ces touches.
Les autres fonctionnent niquel.

Mon but serait de pouvoir détecté et agir TANT QUE la touche up, down, right ou left est enfoncée.
Scroll continu en gros.

Sans vouloir abusé de vos connaissances, si quelqu'un aurait aussi sous la main un code pour capterle déplacement de souris au niveau OS et non au niveau de ma form çà m'aiderait.
EX: Dans photoshop, si je maintient ESPACE enfoncé et bouge ma souris, la vue défile.
Même si ma souris sors de la'ppli, la vue défile.
Même si je suis à la limite de mon écran et que je continue à déplacer la souris dans cette direction, la vue défile.

Sous VS.net, je ne capte que dans ma form.

Merci d'avance à tous les codeurs.