1

我正在尝试创建一个自定义滚动条并使用图像作为按钮。

现在一个简单的

我可以很好地处理 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);
    }
}
4

3 回答 3

2

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

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

希望这可以帮助。

于 2009-04-14T22:21:25.053 回答
0

哪一块“不太好用”?

此外,您能否重新设计或重新设计 Silverlght 的滚动条,类似于在此博客文章中看到的内容,以获得您需要的内容?

于 2009-04-13T02:55:11.480 回答
0

我会使用故事板作为计时器。就像是:

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

于 2009-04-13T12:08:04.833 回答