C# WinForm实现OBS风格hh:mm:ss格式直播正计时功能
C# WinForm 直播正计时器实现方案
前置配置
首先在设计器中选中你已经添加的timerXD控件,将它的Interval属性设置为1000(单位为毫秒,即每秒触发一次Tick事件)。
代码修改步骤
1. 新增类级字段
在MainFormProgram类中添加两个私有字段,用于记录直播状态和开始时间:
// 记录直播开始的时间点 private DateTime _streamStartTime; // 标识当前是否处于直播状态 private bool _isStreaming = false;
2. 初始化计时器显示
在Form1_Load事件中添加初始化代码,让页面加载时计时器默认显示00:00:00:
private void Form1_Load(object sender, EventArgs e) { // 原有代码保持不变 OnLbl.Text = "ON"; OnLbl.ForeColor = Color.ForestGreen; EmoteonlyOnOff.Text = "OFF"; EmoteonlyOnOff.ForeColor = Color.DarkRed; SubchatOnOff.Text = "OFF"; SubchatOnOff.ForeColor = Color.DarkRed; // 新增计时器初始化代码 timerLbl.Text = "00:00:00"; }
3. 修改开始直播按钮点击事件
点击开始直播时记录当前时间,启动计时器:
private void startstreamBtn_Click(object sender, EventArgs e) { if (!_isStreaming) { _streamStartTime = DateTime.Now; timerXD.Start(); _isStreaming = true; // 可自行添加按钮状态切换逻辑,比如置灰开始按钮、点亮结束按钮 } }
4. 添加结束直播按钮点击事件
如果你已经在设计器中添加了结束直播按钮,绑定如下点击事件即可:
private void endstreamBtn_Click(object sender, EventArgs e) { if (_isStreaming) { timerXD.Stop(); timerLbl.Text = "00:00:00"; _isStreaming = false; // 可自行添加按钮状态切换逻辑 } }
5. 实现计时器Tick事件
每秒更新一次直播时长显示:
private void timerXD_Tick(object sender, EventArgs e) { TimeSpan streamDuration = DateTime.Now - _streamStartTime; // 格式化为 时:分:秒 格式,不足两位自动补0 timerLbl.Text = streamDuration.ToString(@"hh\:mm\:ss"); }
可选优化
如果需要支持超过24小时的直播时长显示,可将Tick事件中的格式化字符串改为@"dd\:hh\:mm\:ss",即可额外显示天数。
内容的提问来源于stack exchange,提问作者Maurice Preiß
相关产品推荐
相关产品推荐

