Как реализовать, чтобы определенные кнопки появлялись на некоторое время, когда я перемещаю мышь, а затем исчезаю, если мышь остается неподвижной? - PullRequest
2 голосов
/ 12 января 2012

Я использовал событие MouseMove для обнаружения движения мыши, чтобы я мог изменить видимость моих кнопок.После того, как мышь перестала двигаться, кнопки все еще там, потому что я не знаю, как и где подсчитать время, чтобы эти кнопки снова стали невидимыми.

Эти кнопки являются элементами управления на видеопроигрывателе в полноэкранном режиме.так что любая другая идея также приветствуется.

private void OnTimedEvent(object source, ElapsedEventArgs e)
    {
        timer.Stop();

        button1.Visibility = Visibility.Hidden;
        button2.Visibility = Visibility.Hidden;
    }

    private void mediaElement1_MouseMove(object sender, MouseEventArgs e)
    {
        if (!timer.Enabled)
        {
            timer.Enabled = true;
            return;
        }
        if (timer.Enabled)
        {
            timer.Interval = 2000;
            timer.Start();

            button1.Visibility = Visibility.Visible;
            button2.Visibility = Visibility.Visible;

            timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

        }
    }

1 Ответ

2 голосов
/ 12 января 2012

Лучше всего использовать таймер, например класс Timer. Затем вы можете подключиться к событию Elapsed и использовать обработчик внутри него для подсчета прошедшего времени. Как только вы достигнете определенного временного порога, вы можете скрыть кнопки. Таким образом, пример шагов кода будет выглядеть примерно так:

  1. Пользователь двигает мышь.
  2. Показать кнопки.
  3. Пользователь перестает двигать мышь.
  4. Таймер запуска.
  5. Время отсчета на Timer.Elapsed событии.
  6. Счетчик времени достигает порога.
  7. Скрыть кнопки и остановить таймер.

Activity Diagram Showing Events and Process

...