пытаясь добавить функцию «перемотка вперед» к кнопке в c # - PullRequest
1 голос
/ 16 июня 2011

, поэтому у меня есть кнопка, я пытаюсь добавить функцию, которая использует System.Diagnostics.Stopwatch для кнопки, аналогичной ускоренной перемотке вперед или назад.когда я удерживаю кнопку в течение секунды, я хочу, чтобы она сделала что-то глупое, например так:

private void button_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        var stopWatch = Stopwatch.StartNew();
        if (stopWatch.ElapsedTicks < 1000)
        {
            lbl1.Content = "Quickpress";
        }
        else if (stopWatch.ElapsedTicks >1000)
        {
            HAVE SOME ACTION HAPPEN HERE EVERY .5 SECONDS (how do i do it)
        }
    }

сейчас, это намного проще, чем то, что я хочу сделать, но если пользователь нажимает кнопку длядолгое время я хочу, чтобы действие происходило каждые 0,5 секунды, как мне это сделать?

срабатывает событие mousedown, просто всегда выбирается короткое нажатие, даже если я удерживаю кнопку нажатой.

Ответы [ 2 ]

2 голосов
/ 16 июня 2011

RepeatButton - это, вероятно, то, что вы ищете, оно инкапсулирует периодическое поведение, но я не знаю, есть ли способ отличить короткий щелчок от удерживающего щелчка.

Редактировать: Мне кажется, вам все еще нужно поле (ну, вы могли бы использовать Tag) для учета состояния, например,

<RepeatButton
        Click="RepeatButton_Click"
        PreviewMouseLeftButtonUp="RepeatButton_MouseLeftButtonUp"
        Interval="500" Delay="1000" Content="Buton" />
int _clickCount = 0;
private void RepeatButton_Click(object sender, RoutedEventArgs e)
{
    if (_clickCount > 0)
    {
        // Repeated hold action
    }
    _clickCount++;
}

private void RepeatButton_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    if (_clickCount == 1)
    {
        // Short click action
    }
    _clickCount = 0;
}

(Обратите внимание, что приведенный выше код далеко не чистый, существуют проблемы с логикой щелчка, например, поскольку сброс должен происходить при наведении мыши вверх, но действие короткого щелчка следует выполнять только в том случае, если мышь все еще находится над кнопкой, так как код теперь, действие всегда будет происходить (если, конечно, будет выполнено условие if)

0 голосов
/ 16 июня 2011

Вам необходимо повторно использовать существующий экземпляр Stopwatch, сохранив его в поле вашего класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...