vb.net - 如何使用 vb.net 获取数字的百分比
问题描述
我正在开发一个应用程序来学习(倒计时),我希望字体颜色从一开始就为绿色,并在分配时间的 15% 时变为红色。我已经完成了大部分工作,但仍然无法在分配时间的 15% 时让它变红。请帮帮我。
这是我声明该If
声明的方式:
percentage = ((15 / mm_Label.Text) * 100)
If hr_Label.Text Or mm_Label.Text Or ss_Label.Text = percentage Then
hr_Label.ForeColor = Color.Red
mm_Label.ForeColor = Color.Red
ss_Label.ForeColor = Color.Red
Else
hr_Label.ForeColor = Color.Green
mm_Label.ForeColor = Color.Green
ss_Label.ForeColor = Color.Green
End If
解决方案
我在评论中的意思是,您需要知道一些事情来计算剩余时间的百分比:计时器何时开始,何时结束,以及每次滴答时您之间的距离。我看不到你的其余代码,所以我不能确定为什么它不起作用,但我可以用一个简单的例子来演示这个概念。创建一个全新的 WinForms 项目,将这段代码直接粘贴到新表单中,然后运行它:
Public Class Form1
Dim Lbl As New Label With {.Width = 200}
Dim started As DateTime = DateTime.Now
Dim timeOut As DateTime = DateTime.Now.AddMinutes(1)
'Dim timeOut As DateTime = Date.ParseExact("07/08/2019 18:01", "MM/dd/yyyy HH:mm", System.Globalization.DateTimeFormatInfo.InvariantInfo)
Public Sub New()
InitializeComponent()
Me.Controls.Add(Lbl)
Dim tmr As New Timer With {.Interval = 1000, .Enabled = True}
AddHandler tmr.Tick, AddressOf tmr_Tick
tmr.Start()
End Sub
Private Sub tmr_Tick(sender As Object, e As EventArgs)
Dim diff As TimeSpan = timeOut - DateTime.Now
Dim totalSeconds As Integer = (timeOut - started).TotalSeconds
Dim elapsedSeconds As Integer = diff.TotalSeconds
Dim pctRemaining As Integer = CInt((elapsedSeconds / totalSeconds) * 100)
Lbl.Text = String.Format("{0}:{1}:{2} ({3}% Remaining)", diff.Hours, diff.Minutes, diff.Seconds, pctRemaining)
If pctRemaining < 15 Then Lbl.ForeColor = Color.Red
End Sub
End Class
此示例仅设置timeOut
为未来一分钟,但您可以将其值设置为任何值,方法是将字符串解析为日期时间,如注释掉的行中。我鼓励您仔细阅读代码,并在必要时单步执行。New() 子中的所有内容都只是设置标签和计时器,您真正需要关心的是保存开始倒计时的日期时间(started
),倒计时结束的日期时间(timeOut
),并计算差异在tmr_Tick
事件内的每个滴答声中它们之间。我认为那里的代码很容易解释,但总而言之,你只是看到还有多少时间,timeOut
直到diff
TimeSpan 并将其显示为倒数计时器。对于百分比计算,您只需要查看总数中经过多少秒才能获得百分比。然后,您只需要检查该百分比是否<15,如果是,则更改文本颜色。
推荐阅读
- r - 如何根据R中的列名对条形图着色
- google-sheets - 使用平均功能可以在 Google 表格中向上或向下舍入吗?
- javascript - 如何测试用 NodeJS 构建的 Telegram 机器人?
- python - 如何将字典的键存储为pyspark中的列表
- python - Pandas - 根据多个条件过滤数据框
- c++ - 在 C++ 中玩弄命令行参数,随之而来的是混乱
- kotlin - 如何使用 GSON 设置未公开参数的默认值
- c - 从c中的参数函数返回未知大小的字符串
- javascript - 如何使用我的网页异步调用的java脚本库的功能?
- javascript - 在输入 react.js 时需要在输入字段中使用自动分隔符