CSharp从0到1-干中学系列之-01-打卡定时器
·
背景:
家中小朋友刚上一年级,每天放学后,学校班主任留作业要求打卡并上传视频。陪同打卡,是心累的。想着能否让其在设定时间内自主打卡,于是就有了这个想法,做一个简单显示时间的东西。
需求:
1.使用C# winform;
2.能够启动定时,能够停止定时;
3.能够倒数显示时间,以时、分、秒的格式;
4.能够设定计时时间;
以上便是我的一个基本需求。
我会什么:
我最近只从w3cschool上浅浅的读了一下C#的语法;从CSDN上一个博主那里简单的了解下winform,没做过一个项目;这样看来,我似乎什么都不会。。。
干中学:
AI这么发达,试试用AI吧;
我把需求详尽了下,发给了千问。。。
就这样,下面便是简单的界面:
下面是调试后的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlTypes;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace daka
{
public partial class Form1 : Form
{
private int totalSeconds = 0;
public Form1()
{
InitializeComponent();
// 1. 初始化下拉框选项(5分钟到24小时)
InitializeTimeOptions();
}
/// <summary>
/// 初始化时间下拉框
/// </summary>
private void InitializeTimeOptions()
{
// 添加 5, 10, 15, 20 分钟
for (int i = 5; i <= 20; i += 5)
{
cmbTime.Items.Add($"{i} 分钟");
}
// 添加 30 分钟到 24 小时
for (int i = 30; i <= 1440; i += 30)
{
cmbTime.Items.Add($"{i} 分钟");
}
cmbTime.SelectedIndex = 0;
}
/// <summary>
/// 启动/停止 按钮点击事件
/// </summary>
private void btnStartStop_Click(object sender, EventArgs e)
{
if (timer1.Enabled)
{
// 如果定时器正在运行,点击则停止
StopTimer();
}
else
{
// 如果定时器未运行,点击则启动
StartTimer();
}
}
/// <summary>
/// 启动计时逻辑
/// </summary>
private void StartTimer()
{
// 从下拉框提取分钟数
string selectedText = cmbTime.SelectedItem.ToString();
int minutes = int.Parse(selectedText.Replace(" 分钟",""));
totalSeconds = minutes * 60;
// 防止在计时过程中修改时间
cmbTime.Enabled = false;
btnStartStop.Text = "停止计时";
// 立即刷新一次显示,避免点击后等1秒才变化
UpdateDisplay();
timer1.Start();
}
/// <summary>
/// 停止计时逻辑
/// </summary>
private void StopTimer()
{
timer1.Stop();
cmbTime.Enabled = true;
btnStartStop.Text = "启动计时";
lblDisplay.Text = "00:00:00";
}
private void timer1_Tick(object sender, EventArgs e)
{
totalSeconds--;
if (totalSeconds <= 0)
{
// 倒计时结束
totalSeconds = 0;
UpdateDisplay();
StopTimer();
// 提示用户(可替换为蜂鸣声或弹窗)
MessageBox.Show("打卡时间到!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
//正常倒计时
UpdateDisplay();
}
}
/// <summary>
/// 格式化并更新显示框 (HH:mm:ss)
/// </summary>
private void UpdateDisplay()
{
int hours = totalSeconds / 3600;
int minutes = (totalSeconds % 3600) / 60;
int seconds = totalSeconds % 60;
// 使用 PadLeft 保证个位数时前面补0,例如 09:05:01
lblDisplay.Text = $"{hours.ToString().PadLeft(2, '0')}:" +
$"{minutes.ToString().PadLeft(2, '0')}:" +
$"{seconds.ToString().PadLeft(2, '0')}";
}
}
}
下面是成品图:
可以设定时间,可以根据需要修改代码。
启动定时后开始进行倒数计时。
收获:
从AI学习编码,没想到还成功了。对winform及操作函数有了一个简单了解,其它的收获就不再啰嗦了,个中体会吧。
源码链接:(整理好后会放到这里)
下一个,做个什么呢,还没想好。。。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)