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 :

[C#] Panel et ScrollBar


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 49
    Points : 34
    Points
    34
    Par défaut [C#] Panel et ScrollBar
    Bonjour à tous,

    J'ai un panel dans lequel j'affiche X userControl. Sur ce panel, j'ai défini AutoScroll à true. Le problème, pour mes utilisateurs, est le pas de la molette. Ils aimeraient que lors du défilement de la souris, le défilement au niveau du panel soit plus lent.
    Je pensais qu'il s'agissait une configuration au niveau de la souris (dans le panneau de configuration). Pas de chance pour moi, ca ne fonctionne pas.

    Je viens donc demander votre aide. Avez-vous une piste pour résoudre mon problème ?

    Merci d'avance
    Luc
    "De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent" (Desproges)

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 612
    Points : 1 050
    Points
    1 050
    Par défaut
    Salut
    -----

    Tu peux t'abonner à l'évènement MouseWheel et gérer par soft l'action de la roulette, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    this.MouseWheel +=new MouseEventHandler(formPreview_MouseWheel);    // interception de la roulette de la souris
            //--------------------------------------------------------------------------------------------
            // 1 clic correspond à 120 pour la valeur delta
            // La roulette modifie le zoom
            //--------------------------------------------------------------------------------------------
            void formPreview_MouseWheel(object sender, MouseEventArgs e)
            {
                if (e.Delta / 120 <= -1)
                    ZoomOut();
                else
                    if (e.Delta / 120 >= 1)
                        ZoomIn();
            }
    Ou alors tu peux dériver ton propre contrôle et surcharger WndProc pour gérer toi-même les actions de la souris, comme ceci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     protected override void WndProc(ref Message m)
            {
                const int WM_MOUSEWHEEL = 0x20A;                // la roulette de la souris a bougé
     
                switch (m.Msg)                              // opérer en fonction du message reçu
                    {
                    case WM_MOUSEWHEEL:                     // gérer ici l'action de la roulette
                        break;
     
                    default:                                // tous les autres cas
                        base.WndProc(ref m);                // on transmet l'événement normalement, qui produira l'effet voulu
                            break;
                }
            }
    A+
    Claude

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 49
    Points : 34
    Points
    34
    Par défaut
    Merci Claude pour ta réponse.
    J'ai essayé de m'abonner à l'évènement MouseWheel. Lorsque je scrolle avec ma souris au niveau de mon panel, il va d'abord lancer la méthode du AutoScroll (en somme le panel va se décaler vers le bas - ou le haut - suivant le sens du scroll) puis la méthode liée à mon événement va se lancer.
    Donc je n'arrive pas à scroller correctement au sein de ce panel.

    Sais-tu comment je pourrais bloquer "le 1er scroll" et appeler uniquement le mien ?

    Merci d'avance
    Luc
    "De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent" (Desproges)

Discussions similaires

  1. Ajout dynamique de label dans un panel avec scrollbar
    Par teddy_bear dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 25/06/2009, 16h48
  2. Panel et scrollbare
    Par Grumphette dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 11/07/2008, 13h03
  3. Panel et ScrollBar horizontal
    Par aurelien.tournier dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/05/2008, 15h26
  4. HELP: soucis avec zoom picturebox, panel et scrollbar
    Par waspy59 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 07/01/2008, 16h33
  5. ScrollBar sur un panel
    Par SDE10 dans le forum Delphi
    Réponses: 2
    Dernier message: 30/10/2006, 18h05

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