Silverlight:MouseLeftButtonDown计时器反复触发事件

时间:2009-04-11 06:07:56

标签: silverlight events silverlight-3.0 user-controls scrollbar

我正在尝试创建自定义滚动条,并将图像用作按钮。

现在一个简单的

我可以正常处理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);
    }
}

3 个答案:

答案 0 :(得分:2)

您正在寻找的功能是RepeatButton,这将在按住鼠标按钮时反复触发它的Click事件。您可以配置事件的延迟和间隔。

然后,您可以设置此按钮的样式以使用Silverlight Show

处的图像

希望这有帮助。

答案 1 :(得分:0)

哪一块“不太合适”?

另外,您是否可以重新设计或重新模拟Silverlght的滚动条,类似于此blog post中所见的滚动条,以获得所需内容?

答案 2 :(得分:0)

我会使用Storyboard作为计时器。类似的东西:

然后你可以做一个MouseSTB.Begin。故事板完成后,您可以在MouseSTB.Completeed事件中捕获它。在那种情况下,你可以做任何你需要做的事情,然后重新开始。通过在mouseover,mouseenter和mouseleave事件上设置一些标志,可以轻松控制它。我在很多地方使用这些计时器,它们工作得很好,而且它们不会挂在处理器上。