代码之家  ›  专栏  ›  技术社区  ›  Gautam

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

  •  1
  • Gautam  · 技术社区  · 16 年前

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

    现在一个简单的

    我可以很好地处理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 回复  |  直到 16 年前
        1
  •  2
  •   Nigel Sampson    16 年前

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

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

    希望这有帮助。

        2
  •  0
  •   Larry Olson    16 年前

    哪个“不太管用”?

    另外,你能重新设计或重新制作silverlght的滚动条吗?类似于这里看到的。 blog post 你需要什么?

        3
  •  0
  •   Bill    16 年前

    我会用故事板作为计时器。类似:

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