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

如何复用进度条更新函数以避免为每个进度条重复编码

如何复用进度条更新函数以避免为每个进度条重复编码

嘿,看你现在写了两个几乎一模一样的进度条加载函数,只是操作的进度条控件和总数值不同,完全没必要重复写这么多代码!咱们只需要把变化的部分抽成函数参数,就能用一个函数搞定所有进度条的更新啦。

重构后的通用函数

首先,把原来函数里差异的内容(目标进度条、总数值)作为参数传入,改写后的函数长这样:

private void LoadProgressBar(Label label, HtmlGenericControl progressBar, int total)
{
    int labelValue;
    if (int.TryParse(label.Text, out labelValue))
    {
        // 计算进度百分比,确保值在0-100之间
        int progressValue = (int)Math.Round((labelValue / (double)total) * 100);
        progressValue = Math.Max(0, Math.Min(100, progressValue));

        // 更新进度条宽度和背景色
        progressBar.Style["width"] = progressValue + "%";

        if (progressValue < 50)
            progressBar.Style["background-color"] = "green";
        else if (progressValue < 80)
            progressBar.Style["background-color"] = "orange";
        else
            progressBar.Style["background-color"] = "red";
    }
}

怎么调用这个函数?

现在不管你有多少个进度条,只需要传入对应的参数就行:

  • 第一个参数:用来获取数值的Label控件
  • 第二个参数:要更新的进度条控件(就是你aspx里那台runat="server"的div)
  • 第三个参数:计算进度用的总数值

比如原来的LoadProgressBar1(Label1);现在可以改成:

// 对应原来的LoadProgressBar1,总数值是120
LoadProgressBar(Label1, progressBar1, 120);

// 对应原来的LoadProgressBar2,总数值是50
LoadProgressBar(Label2, progressBar2, 50);

注意事项

要确保后台代码里的progressBar1、progressBar2的类型是HtmlGenericControl(因为你的aspx里是<div runat="server">),如果之前的类型不对,记得调整一下哦。

如果以后你想调整颜色的阈值(比如把绿色的上限改成60),也可以把这些阈值做成可选参数,让函数更灵活,不过目前这个版本已经能解决你重复编码的问题啦!

备注:内容来源于stack exchange,提问作者Irsman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 12:02:57