You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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ß

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:45:04