当前位置:   article > 正文

WPF计时器功能_wpf 计时器

wpf 计时器

本文实现WPF的计时器功能是通过system.timers.timer这个组件实现的。现在网上相关的资料有很多,我只是在自己的工作中刚好遇到要实现这个功能,中间也走了很多的弯路,不停的参考网上现有的资源,终于实现了基本的定时功能。希望本文可以帮助到您,让您花更少的时间来完成这个功能。

system.timers.timer的相关内容可以查看这个网址Timer 类

显示的页面没有过多的修饰,重要的是功能。基础界面如下:

代码如下:

TestWindow.xaml

  1. <Window x:Class="UI_SubForms_Wpf.TestWindow"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6. xmlns:local="clr-namespace:UI_SubForms_Wpf"
  7. mc:Ignorable="d"
  8. Title="TestWindow" Height="450" Width="800">
  9. <Grid>
  10. <Button Name="BtnStart" Click="BtnStart_OnClick" Content="开始" HorizontalAlignment="Left" Margin="251,194,0,0" VerticalAlignment="Top"/>
  11. <Button Name="BtnPause" Click="BtnPause_OnClick" Content="暂停" HorizontalAlignment="Left" Margin="390,194,0,0" VerticalAlignment="Top"/>
  12. <Button Name="BtnStop" Click="BtnStop_OnClick" Content="停止" HorizontalAlignment="Left" Margin="320,194,0,0" VerticalAlignment="Top"/>
  13. <TextBox Name="TbShowTime" HorizontalAlignment="Left" Margin="294,141,0,0" TextWrapping="Wrap" Text="00:00:00" VerticalAlignment="Top" Width="120"/>
  14. </Grid>
  15. </Window>

 点击【开始】按钮,计时器开始计时,文本框显示计时数据,显示如下:

点击【暂停】按钮,计时器暂停计时,文本框显示计时数据,暂停按钮内容改为【继续】显示如下:

 点击【继续】按钮,计时器继续计时,文本框显示计时数据,继续按钮内容改为【暂停】显示如下:

 点击【停止】按钮,计时器停止计时,文本框显示计时数据,显示如下: 

 

  再次点击【开始】按钮,计时器开始重新开始计时,文本框显示计时数据,类似实现重置功能,显示如下:

 相关的TestWindow.xaml.cs代码如下:

  1. public partial class TestWindow : Window
  2. {
  3. //计时器
  4. System.Timers.Timer timer;
  5. //委托
  6. delegate void SetTextCallback(int TimeSpan);
  7. public int seconds = 0;
  8. public TestWindow()
  9. {
  10. InitializeComponent();
  11. }
  12. private void InitTimer()
  13. {
  14. //释放计时器占用资源,也就是“销毁计时器”
  15. if (timer != null)
  16. timer.Dispose();
  17. //实例化一个计时器
  18. timer = new System.Timers.Timer(1000);
  19. timer.Start();
  20. timer.Enabled = true;
  21. seconds = 0;
  22. timer.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
  23. }
  24. private void Timer_Elapsed(object source, ElapsedEventArgs e)
  25. {
  26. timer.Stop();
  27. //委托传值
  28. this.Dispatcher.Invoke(new SetTextCallback(SetReallyTime), new object[] { seconds });
  29. seconds++;
  30. timer.Start();
  31. }
  32. private void SetReallyTime(int TimeSpan)
  33. {
  34. var timeSpan = new TimeSpan(0, 0, TimeSpan);
  35. this.TbShowTime.Text = string.Format("{0:00}:{1:00}:{2:00}", (int)timeSpan.TotalHours, timeSpan.Minutes, timeSpan.Seconds);
  36. }
  37. //开始按钮
  38. private void BtnStart_OnClick(object sender, RoutedEventArgs e)
  39. {
  40. InitTimer();
  41. }
  42. //暂停按钮
  43. private void BtnPause_OnClick(object sender, RoutedEventArgs e)
  44. {
  45. if (BtnPause.Content == "暂停")
  46. {
  47. //计时器停止运行
  48. timer.Enabled = false;
  49. //改变按钮显示内容
  50. this.BtnPause.Content = "继续";
  51. }
  52. else
  53. {
  54. //计时器继续运行
  55. timer.Enabled = true;
  56. //改变按钮显示内容
  57. this.BtnPause.Content = "暂停";
  58. }
  59. }
  60. //停止按钮
  61. private void BtnStop_OnClick(object sender, RoutedEventArgs e)
  62. {
  63. //计时器停止运行
  64. timer.Enabled = false;
  65. seconds = 0;
  66. }
  67. }

以上就可以实现WPF的计时器功能,如果您有更好的方法,希望您也分享出来。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/635519
推荐阅读
相关标签
  

闽ICP备14008679号