Long pressed button

button, c#, winforms

Solution

UPDATED: Shortest way:

Using `Anonymous Methods` and `Object Initializer`:

public void Repeater(Button btn, int interval)
{
    var timer = new Timer {Interval = interval};
    timer.Tick += (sender, e) => DoProgress();
    btn.MouseDown += (sender, e) => timer.Start();
    btn.MouseUp += (sender, e) => timer.Stop();
    btn.Disposed += (sender, e) =>
                        {
                            timer.Stop();
                            timer.Dispose();
                        };
}

Problem

I want to repeat an action when a `Button` is pressed during a long time, like for example the forward button of an MP3 reader. Is there an existing c# event in WinForm ? I can handle the `MouseDown` event to start a timer which will perform the action and stop it on `MouseUp` event, but I am looking for an easier way to solve this problem => ie : a solution without a `Timer` (or Thread / Task ...).

Original source