J'essaie de créer une barre de défilement personnalisée et j'utilise des images comme bouton.Silverlight: le temporisateur MouseLeftButtonDown déclenche à plusieurs reprises un événement
Pour l'instant simple
Je peux gérer l'événement MouseLeftButtonDown et juste bien, mais ce que je voudrais faire est tout en son lieu vers le bas, tout autant de milliseconde déclencher un événement est déclenché.
J'ai essayé quelque chose comme ça mais ça ne marche pas vraiment. Suggestions?
public delegate void Changed(RangeScrollButtonControl sender, int value);
public event Changed OnChanged;
private System.Threading.Timer Timer;
private void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.Timer = new System.Threading.Timer(Timer_Callback, null, 0, 100);
}
private void Image_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
this.Timer = null;
}
private void Timer_Callback(object sender)
{
if (this.OnChanged != null)
{
this.OnChanged(this, 1);
}
}
Il est apparu que l'objet Timer n'était pas compatible avec les threads et que je rencontrais des exceptions de threads croisés. La solution consistait à utiliser DispatchTimer et ça fonctionne bien maintenant. – Gautam