IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.net 2005] Gestion du scroll via code


Sujet :

Windows Forms

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2003
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 298
    Par défaut [VB.net 2005] Gestion du scroll via code
    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.

  2. #2
    AP
    AP est déconnecté
    Membre chevronné
    Avatar de AP
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 480
    Par défaut
    override IsInputKey de ton control et renvoie vrai quand c'est une touche de direction.

  3. #3
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 182
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 182
    Par défaut
    Bonjour.

    Pour capter la souris, ce trés bon code :
    http://www.colinneller.com/blog/Perm...e5918a39c.aspx

    Mais faut aimer le non managé !

    Cdt.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/01/2008, 11h34
  2. VB.NET 2005 Erreur incompréhensible avec le code
    Par Herlece dans le forum Windows Forms
    Réponses: 10
    Dernier message: 20/12/2007, 20h28
  3. Réponses: 0
    Dernier message: 29/11/2007, 10h25
  4. Réponses: 3
    Dernier message: 03/05/2006, 10h19
  5. [Conception] Question: Gestion Incrementation via SQL ou VIA Code PHP ???
    Par ronio dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 15/02/2006, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo