2009-09-24 8 views
3

Lorsque j'essaie d'utiliser un contrôle Slider, je voudrais écouter le MouseLeftButtonDown et MouseLeftButtonUp. J'ai des gestionnaires mis en place pour les deux événements. Le MouseLeftButtonUp fonctionne comme prévu. MouseLeftButtonDown n'est pas élevé du tout.Le curseur MouseLeftButtonDown ne fonctionne pas?

Des idées pourquoi?

J'ai fait un peu de googling et il semble que le WPF ne tire pas non plus. L'une des solutions (in this post) consistait à utiliser la version Preview des événements, ce que Silverlight ne prend pas en charge.

Y at-il une solution simple à ce que je ne vois pas?

Merci J

Répondre

11

Il arrive que la souris poignées curseur vers le bas/haut événements. En interne, il est implémenté comme deux RepeatButtons et un pouce au milieu. Lorsque vous cliquez sur le côté gauche ou droit du curseur, vos événements de souris sont gérés par RepeatButtons, et vous ne les obtenez pas.

Si vous souhaitez toujours gérer un événement géré, vous pouvez utiliser la méthode AddHandler(). Voici par exemple Silverlight:

XAML

<Slider Width="100" 
     VerticalAlignment="Top" 
     Minimum="0" 
     Maximum="100" 
     Name="sl" /> 

C#

public partial class MainPage : UserControl 
{ 
    public MainPage() 
    { 
    InitializeComponent(); 

    sl.AddHandler(MouseLeftButtonDownEvent, new MouseButtonEventHandler(Slider_MouseLeftButtonDown), true); 
    sl.AddHandler(MouseLeftButtonUpEvent, new MouseButtonEventHandler(Slider_MouseLeftButtonUp), true); 
    } 

    private void Slider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
    { 
    } 

    private void Slider_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
    } 
} 

Dans la situation WPF est presque identique (petites différences dans les noms).

+0

Juste ce dont j'avais besoin. Merci. Cela devrait être larked comme réponse! – NER1808