使用 C# Winfrom编写倒计时功能

在日常生活中,我们经常需要倒计时来提醒自己重要的时间节点,比如倒计时到达一个特定的日期和时间。介绍一个使用 C# 编写的倒计时应用程序的实现。

步骤一:应用程序的功能

它具有以下几个主要特点:

  1. 用户输入目标日期和时间:应用程序提供了一个日期选择器控件,用户可以选择一个未来的日期和时间作为倒计时的目标。
  2. 开始倒计时:当用户点击开始按钮时,应用程序会解析用户输入的日期和时间,并通过计算得出距离目标时间还剩余多少时间。然后,应用程序会启动一个计时器,并开始倒计时。
  3. 更新倒计时标签:倒计时过程中,应用程序会实时更新一个标签,显示剩余的天数、小时、分钟和秒数。
  4. 时间到达提示:当倒计时结束时,应用程序会弹出一个提示框,提示用户时间已到。

步骤二:应用程序的实现

界面设计、

我们使用 Windows 窗体设计器工具创建了一个窗体,并添加了日期选择器、开始按钮、停止按钮和一个用于显示倒计时的标签。
在这里插入图片描述

事件处理

我们为开始按钮的点击事件、停止按钮的点击事件和计时器的 Tick 事件编写了相应的事件处理方法。在开始按钮的点击事件中,我们解析用户输入的日期和时间,并启动计时器。在计时器的 Tick 事件中,我们更新剩余时间并更新倒计时标签。当时间到达时,我们停止计时器并弹出提示框。
定义全局变量

        private DateTime targetDateTime; // 目标日期和时间private TimeSpan remainingTime; // 剩余时间private bool isCountingDown = false; // 是否正在计时

开始按钮button

 private void startButton_Click(object sender, EventArgs e){if (isCountingDown){MessageBox.Show("计时器已经在运行。");return;}// 解析用户输入的日期和时间if (!DateTime.TryParse(dateTimePicker1.Value.ToString(), out targetDateTime)){MessageBox.Show("无效的日期格式,请输入有效的日期。");return;}// 检查是否选择了未来的日期和时间TimeSpan timeDifference = targetDateTime - DateTime.Now;if (timeDifference.TotalSeconds <= 0){MessageBox.Show("请选择一个未来的日期和时间。");return;}DateTime selectedDateTime = dateTimePicker1.Value;// 开始倒计时计时器并记录剩余时间remainingTime = timeDifference;timer1.Start();isCountingDown = true;startButton.Enabled = false;stopButton.Enabled = true;}

停止按钮button

  private void stopButton_Click(object sender, EventArgs e){timer1.Stop(); // 停止计时器isCountingDown = false;startButton.Enabled = true;stopButton.Enabled = false;}

计算button

 private void calculateButton_Click(object sender, EventArgs e){// 解析用户输入的日期和时间if (!DateTime.TryParse(dateTimePicker1.Value.ToString(), out DateTime selectedDate)){MessageBox.Show("格式错误");return;}// 检查是否选择了未来的日期和时间TimeSpan timeDifference = selectedDate - DateTime.Now;if (timeDifference.TotalSeconds < 0){MessageBox.Show("请选择未来的时间");return;}// 计算时间差并显示结果resultLabe2.Text = string.Format("{0} 天, {1} 小时, {2} 分, {3} 秒",timeDifference.Days,timeDifference.Hours,timeDifference.Minutes,timeDifference.Seconds);}

时间处理

我们使用 .NET Framework 提供的 DateTime 和 TimeSpan 类来处理日期和时间。我们解析用户输入的日期和时间,并计算出距离目标时间还剩余多少时间。

        private void timer1_Tick(object sender, EventArgs e){remainingTime = remainingTime.Subtract(TimeSpan.FromSeconds(1)); // 更新剩余时间if (remainingTime.TotalSeconds <= 0){MessageBox.Show("Time's up!");stopButton_Click(sender, e); // 时间到了,停止计时器}UpdateTimerLabel(); // 更新计时器标签}
        private void UpdateTimerLabel(){timerLabel.Text = string.Format("{0}天;{1}小时:{2}分:{3}秒",remainingTime.TotalDays.ToString("000"),remainingTime.Hours.ToString("00"),remainingTime.Minutes.ToString("00"),remainingTime.Seconds.ToString("00"));}

注意:需要引入timer

在这里插入图片描述

运行结果

在这里插入图片描述

在使用这个应用程序时,你可以选择一个未来的日期和时间作为目标,然后点击开始按钮开始倒计时。应用程序会实时更新倒计时标签,直到时间到达时弹出提示框。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/603200.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零实现CLIP模型

1. 引言 CLIP代表语言图像对比预训练模型&#xff0c;是OpenAI于2021年开发的一个深度学习模型。CLIP模型中图像和文本嵌入共享相同的潜在特征空间&#xff0c;从而能够在两种模式之间直接进行对比学习。这是通过训练模型使相关的图像和文本更紧密地结合在一起&#xff0c;同时…

浅谈 JVM 类加载过程

&#x1f697;&#x1f697;&#x1f697;今天给大家分享的是HTTPS加密的工作过程。 清风的CSDN博客 &#x1f6e9;️&#x1f6e9;️&#x1f6e9;️希望我的文章能对你有所帮助&#xff0c;有不足的地方还请各位看官多多指教&#xff0c;大家一起学习交流&#xff01; ✈️✈…

四. 基于环视Camera的BEV感知算法-BEVDistill

目录 前言0. 简述1. 算法动机&开创性思路2. 主体结构3. 损失函数4. 性能对比总结下载链接参考 前言 自动驾驶之心推出的《国内首个BVE感知全栈系列学习教程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 本次课程我们来学习下课程第四章——基于环视Cam…

Transformer架构和对照代码详解

1、英文架构图 下面图中展示了Transformer的英文架构&#xff0c;英文架构中的模块名称和具体代码一一对应&#xff0c;方便大家对照代码、理解和使用。 2、编码器 2.1 编码器介绍 从宏观⻆度来看&#xff0c;Transformer的编码器是由多个相同的层叠加⽽ 成的&#xff0c;每个…

Auto tokenizer和Bert tokenizer的区别

"AutoTokenizer" 和 "BERT Tokenizer" 是两个不同概念&#xff0c;而不是两种不同的tokenizer。让我为您解释它们的含义&#xff1a; AutoTokenizer: "AutoTokenizer" 不是一个具体的tokenizer&#xff0c;而是 Hugging Face Transformers 库中提…

10款有趣的前端源码分享(附效果图及在线演示)

分享10款非常有趣的前端特效源码 其中包含css动画特效、js原生特效、svg特效以及小游戏等 下面我会给出特效样式图或演示效果图 但你也可以点击在线预览查看源码的最终展示效果及下载源码资源 自毁按钮动画特效 自毁按钮动画特效 点击打开盒子可以点击自毁按钮 进而会出现自毁…

【网络层】网际控制报文协议ICMP(湖科大慕课自学笔记)

网际控制报文协议ICMP 1&#xff1a;网际控制报文协议ICMP基本概述 ICMP报文被封装在IP数据报中发送 1&#xff1a;ICMP报文格式 ICMP报文作为IP数据报的数据载荷&#xff0c;IP协议为其添加一个首部使之成为IP数据报 2&#xff1a;ICMP报文类型 ICMP报文分为两大类&#x…

NGUI基础-三大基础组件之Event System(Uicameras)

目录 主要作用 相关参数 (建议&#xff1a;红色是重点&#xff0c;黑色的了解即可&#xff09; Event Type Events go to Process Events in Event Mask​编辑 Debug Command Click Allow Multi Touch Auto Hide Cursor Sticky ToolTip/Long press ToolTip/ToolTip…

vue实现点击复制功能方法封装demo。

源码如下 copyTextToClipboard(text, that) { const textArea document.createElement("textarea"); textArea.value text; document.body.appendChild(textArea); 在子节点末尾添加元素 textArea.select(); select方法讲解可以了解一下 JavaScri…

工业协议转换网关:打破通信壁垒,实现设备互联

在工业自动化领域&#xff0c;各种设备和系统间的通信协议不尽相同&#xff0c;这给不同设备间的集成和数据交互带来了挑战。工业协议转换网关作为一种解决这一问题的关键设备&#xff0c;能够实现不同协议间的转换和数据传输&#xff0c;打破通信壁垒&#xff0c;提高设备的协…

【PostgreSQL】模式Schema

PostgreSQL 数据库集群包含一个或多个命名数据库。角色和一些其他对象类型在整个集群中共享。与服务器的客户端连接只能访问单个数据库中的数据&#xff0c;该数据库在连接请求中指定。 数据库包含一个或多个命名schema&#xff0c;而这些schema又包含表。schema还包含其他类型…

Java 基础知识点1 (含面试题)

本次Java 知识点主要是关于SE的相关基础&#xff0c;同时也包含了数据结构中的一些API&#xff0c;例如Set,List,Map等&#xff0c;最后也附上了相关重要的面试题&#xff0c;可供大家学习与参考&#xff01; 目录 重要知识点数据结构API面试题 重要知识点 Java 是一门面向对象…

税法相关的基础知识

文章目录 税法原则1.税法基本原则2.税法适用原则3.税收收入划分 来和大家聊聊税法相关的基础知识 税法原则 1.税法基本原则 2.税法适用原则 3.税收收入划分

Flume基础知识(十):Flume 聚合实战

1&#xff09;案例需求&#xff1a; hadoop100上的 Flume-1 监控文件/opt/module/group.log&#xff0c; hadoop101上的 Flume-2 监控某一个端口的数据流&#xff0c; Flume-1 与 Flume-2 将数据发送给 hadoop102 上的 Flume-3&#xff0c;Flume-3 将最终数据打印 到控制台。…

数据库事务的特性

数据库事务具有 ACID 特性&#xff0c;其中 ACID 是指原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff09;和持久性&#xff08;Durability&#xff09;。这些特性是为了确保数据库在事务处理中的可…

Android 13.0修改recovery 菜单项字体大小

1.概述 在13.0的系统rom定制化开发中,在系统进入recovery模式后,界面会g_menu_actions 菜单选项和 提示文字,而这些文字的大小不像上层一样是通过设置属性来表示大小的 而它确是通过字体png图片的大小来计算文字的宽和高的,然后可以修改字体大小,接下来就实现菜单项字体大…

RocketMQ详细介绍及核心问题解释(很全)

1. RocketMq是什么 一个纯Java、分布式队列模型的消息中间件&#xff0c;具有高可用、高可靠、高实时、低延迟的特点。&#xff08;记住这句就行了&#xff09; 2. RocketMq有什么功能 1、业务解耦&#xff1a;这也是发布订阅的消息模型。生产者发送指令到MQ中&#xff0c;然…

python中parsel模块的css解析

一、爬虫页面分类 1.想要爬取的内容全部在标签中&#xff0c;可以使用xpath去进行解析如下图 2.想要爬取的内容呈现json的数据特征&#xff0c;用.json()转换为字典格式 3.页面不规则&#xff0c;标签中包含大括号&#xff0c;如下面想要获取键值内容怎么做&#xff0c;先用re正…

Binius:基于binary fields的SNARKs(Part 2)

1. 引言 前序博客有&#xff1a; Binius&#xff1a;基于binary fields的SNARKs&#xff08;Part 1&#xff09;Binius&#xff1a;助力ZK行业发展 本文重点关注&#xff1a; 1&#xff09;concatenated codes&#xff1a;可扩展对small fields的多项式承诺方案2&#xff0…

Docker学习与应用(六)-Docker网络

1、Docker网络 Docker有多种网络模式可以选择&#xff0c;可以根据应用场景和需求选择合适的网络模式。 桥接模式&#xff08;Bridge Mode&#xff09;&#xff1a;默认情况下&#xff0c;Docker使用桥接模式创建一个虚拟网络&#xff0c;所有容器会连接到这个虚拟网络中。每个…