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

2024-01-07 20:39:46

在日常生活中,我们经常需要倒计时来提醒自己重要的时间节点,比如倒计时到达一个特定的日期和时间。介绍一个使用 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

在这里插入图片描述

运行结果

在这里插入图片描述

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

文章来源:https://blog.csdn.net/m0_67528197/article/details/135432618
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。