WPF计时器功能

这篇具有很好参考价值的文章主要介绍了WPF计时器功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

WPF计时器功能

代码如下:

TestWindow.xaml

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

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

WPF计时器功能

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

WPF计时器功能

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

WPF计时器功能

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

 WPF计时器功能

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

WPF计时器功能

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

 public partial class TestWindow : Window
    {
        //计时器
        System.Timers.Timer timer;
        //委托
        delegate void SetTextCallback(int TimeSpan);             
        public int seconds = 0;
        public TestWindow()
        {
            InitializeComponent();
        }
        private void InitTimer()
        {
            //释放计时器占用资源,也就是“销毁计时器”
            if (timer != null)
                timer.Dispose();
            //实例化一个计时器
            timer = new System.Timers.Timer(1000);
            timer.Start();
            timer.Enabled = true;
            seconds = 0;
            timer.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
        }

        private void Timer_Elapsed(object source, ElapsedEventArgs e)
        {
            timer.Stop();
            //委托传值
            this.Dispatcher.Invoke(new SetTextCallback(SetReallyTime), new object[] { seconds });
            seconds++;
            timer.Start();
        }

        private void SetReallyTime(int TimeSpan)
        {
            var timeSpan = new TimeSpan(0, 0, TimeSpan);
            this.TbShowTime.Text = string.Format("{0:00}:{1:00}:{2:00}", (int)timeSpan.TotalHours, timeSpan.Minutes, timeSpan.Seconds);
        }
        //开始按钮
        private void BtnStart_OnClick(object sender, RoutedEventArgs e)
        {
            InitTimer();
        }
        //暂停按钮
        private void BtnPause_OnClick(object sender, RoutedEventArgs e)
        {
            if (BtnPause.Content == "暂停")
            {
                //计时器停止运行
                timer.Enabled = false;
                //改变按钮显示内容
                this.BtnPause.Content = "继续";
            }
            else
            {
                //计时器继续运行
                timer.Enabled = true;
                //改变按钮显示内容
                this.BtnPause.Content = "暂停";
            }
        }
        //停止按钮
        private void BtnStop_OnClick(object sender, RoutedEventArgs e)
        {
            //计时器停止运行
            timer.Enabled = false;
            seconds = 0;
        }
    }

以上就可以实现WPF的计时器功能,如果您有更好的方法,希望您也分享出来。文章来源地址https://www.toymoban.com/news/detail-447427.html

到了这里,关于WPF计时器功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Redis的实现四:事件循环和计时器

           我们的服务器缺少了一个 内容 : 超时 。每个网络应用程序都需要处理超时,因为网络的另一边可能会消失。不要只进行持续的IO操作,如读/写需要超时,但启动空闲的TCP连接也是一个好主意。要实现超时,必须修改事件循环,因为轮询是唯一被阻塞的东西。 我们的

    2024年01月16日
    浏览(8)
  • Unity_计时器实现的四种方式

    在Unity中,可以使用Time.deltaTime来计算游戏运行的时间。可以在每一帧的Update()函数中使用它,将它乘以一个时间因子,得到累计的时间。例如: 相信系统学习过Unity的人都听说过协程,使用协程可以轻而易举的来实现计时的操作 Unity中的InvokeRepeating函数可以在一定时间间隔内重

    2024年02月09日
    浏览(11)
  • 嵌入式单片机——60秒计时器的实现

    1.设计秒计时器,要求实现60秒计时,用2位LED数码管显示。 2.按键K1,实现秒表的停止和启动。

    2024年02月03日
    浏览(10)
  • Vivado设计秒表计时器实现00分00.00秒到59分59.99秒的计时(verilog语言)

    Vivado设计秒表计时器实现00分00.00秒到59分59.99秒的计时(verilog语言)

    目录 0.写在最前 一、课程设计要求: 三、名词说明解释 四、Vivado代码实现部分 五、仿真测试程序 六、约束文件 七、开发板结果展示 八、关于改进/扩展 ① 增加秒与 0.1s 之间的分隔符“.”号的点亮: ② 取消 0.1s,0.01s 显示,增加小时形成“时分.秒”的显示方式 ③ 其它改

    2024年02月06日
    浏览(10)
  • 【Unity每日一记】Unity中的计时器——4种方法的实现

    【Unity每日一记】Unity中的计时器——4种方法的实现

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【软件设计师高频考点暴击】 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【u

    2024年02月06日
    浏览(11)
  • Java 多线程6——计时器Timer的使用 + 详细代码模拟实现 + 代码优化

    Java 多线程6——计时器Timer的使用 + 详细代码模拟实现 + 代码优化

    本人是一个刚刚上路的IT新兵,菜鸟!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果这篇文章可以帮助到你,劳请大家点赞转发支持一下! 本篇文章为大家带来的仍然是多线程编程,计时器是许多场景都会应用到的一个非常方便快捷实用的类。 🦉定时器,顾

    2024年02月04日
    浏览(11)
  • 14、计时器、定时器设计与应用

    14、计时器、定时器设计与应用

    掌握同步四位二进制计数器 74LS161 的工作原理和设计方法 掌握时钟/定时器的工作原理与设计方法 任务 1:采用行为描述设计同步四位二进制计数器 74LS161 任务 2:基于 74LS161 设计时钟应用 1.创建工程并创建 Verilog 文件 建立 HDL 类型的工程 My74LS161,创建 Verilog 文件 My74LS161,

    2024年02月03日
    浏览(6)
  • vue-element-table表格实现每一条数据绑定定时器实现倒计时或者持续时间

    前言 最近在开发中遇到一个需求,每一条数据前端计算处理时间,或者是倒计时时间。 第一表格不可能展示所有数据,所以我们需要当前时间和数据库开始时间获取一个初始值。 第二我们需要把定时器持续时间绑给每一条数据中,方便展示,和操作时候传递给后端存储。

    2024年01月20日
    浏览(18)
  • 555计时器原理

    555计时器原理

    以Multisim上的555计时器为例: 图0.0 555计时器包含八个引脚 分别为: RST - Reset 复位引脚(低电平有效) DIS - Discharge 三极管集电极Collector输入引脚 THR - Threshold 上阈值电压引脚 TRI - Trigger 触发引脚 CON - Control voltage 1 电压控制引脚 OUT - Output 信号输出引脚 VCC GND 555定时器内部功能图

    2024年02月05日
    浏览(10)
  • java计时器

    java计时器

      在 Java中,我们有一个重要的概念:同步和异步。同步就是 Java中的线程安全,异步就是 Java中的线程非安全。 在使用 JVM时,我们一般都是用 start ()方法启动一个线程,然后设置时间,比如定时器,定时器是在某个指定的时间执行相应的任务。但是,在实际应用中,我们

    2023年04月18日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包