如何复用进度条更新函数以避免为每个进度条重复编码
如何复用进度条更新函数以避免为每个进度条重复编码
嘿,看你现在写了两个几乎一模一样的进度条加载函数,只是操作的进度条控件和总数值不同,完全没必要重复写这么多代码!咱们只需要把变化的部分抽成函数参数,就能用一个函数搞定所有进度条的更新啦。
重构后的通用函数
首先,把原来函数里差异的内容(目标进度条、总数值)作为参数传入,改写后的函数长这样:
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
相关产品推荐
相关产品推荐

