2009-08-29 5 views
0

J'ai créé une application MDI (onglets) qui utilise PictureBoxes dans TabPages. La zone d'image est parfois plus grande que l'onglet, de sorte que les barres de défilement apparaissent. Il est écrit en C# en utilisant Windows Forms.Make tabpage ne traite pas les événements mousewheel (C#)

Dans mon onglet, je capture et traite les événements de la molette de la souris dans l'événement MouseWheel (je l'utilise pour faire pivoter certains objets que je dessine dans la zone d'image). Mais quand j'ai les barres de défilement, quand je tourne la molette de la souris, mes objets tournent, mais les onglets défilent aussi vers le bas.

Comment puis-je faire en sorte que les onglets ne traitent pas l'événement mousewheel et ne le font donc pas défiler vers le bas? Je veux que ce soit défilement seulement si l'utilisateur clique et traîne sur la barre de défilement.

Répondre

1

Sous TabPage et passer outre la méthode WndProc() d'ignorer le message WM_MOUSEWHEEL:

public class MyTabPage : TabPage 
{ 
    private const int WM_MOUSEWHEEL = 0x20a; 

    protected override void WndProc(ref Message m) 
    { 
    // ignore WM_MOUSEWHEEL events 
    if (m.Msg == WM_MOUSEWHEEL) 
    { 
     return; 
    } 

    base.WndProc(ref m); 
    } 
} 

Ensuite, utilisez votre MyTabPage sous-classe en place de la TabPage standard.

+0

Fonctionne! Merci! PS: Existe-t-il un autre moyen, qui ne m'obligerait pas à créer un autre cours? – Ove

Questions connexes