我正在尝试创建自定义滚动条,并将图像用作按钮。
现在一个简单的
我可以正常处理MouseLeftButtonDown和Up事件,但我想要做的就是按住它,每隔这么多毫秒触发事件就会被触发。
我尝试过类似的东西,但它不太合适。建议?
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);
}
}
答案 0 :(得分:2)
您正在寻找的功能是RepeatButton,这将在按住鼠标按钮时反复触发它的Click事件。您可以配置事件的延迟和间隔。
然后,您可以设置此按钮的样式以使用Silverlight Show
处的图像希望这有帮助。
答案 1 :(得分:0)
哪一块“不太合适”?
另外,您是否可以重新设计或重新模拟Silverlght的滚动条,类似于此blog post中所见的滚动条,以获得所需内容?
答案 2 :(得分:0)
我会使用Storyboard作为计时器。类似的东西:
然后你可以做一个MouseSTB.Begin。故事板完成后,您可以在MouseSTB.Completeed事件中捕获它。在那种情况下,你可以做任何你需要做的事情,然后重新开始。通过在mouseover,mouseenter和mouseleave事件上设置一些标志,可以轻松控制它。我在很多地方使用这些计时器,它们工作得很好,而且它们不会挂在处理器上。