2012-01-12 64 views
2

我用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); 

     } 
    } 

回答

2

最好的办法是利用某种形式的计时器,如Timer班。然后,您可以连接到Elapsed事件并使用其中的处理程序来计算已过去的时间。一旦达到某个时间阈值,您就可以隐藏按钮。因此,代码步骤的示例如下所示:

  1. 用户移动鼠标。
  2. 显示按钮。
  3. 用户停止移动鼠标。
  4. 启动计时器。
  5. 计数时间为Timer.Elapsed事件。
  6. 时间计数达到阈值。
  7. 隐藏按钮并停止计时器。

Activity Diagram Showing Events and Process

+0

我还是新手,我应该捕获,当鼠标停止的MouseMove方法中移动,或别的地方? – HomeMade 2012-01-12 11:33:36

+0

您可能想要在“MouseMove”事件处理程序中启动计时器,并在每次输入该方法时重置计时器。我将编辑我的答案以反映这一点。 – 2012-01-12 11:43:17

+0

哦,我刚刚在MSDN – HomeMade 2012-01-12 11:44:04

相关问题