如何使用vb.net获取数字百分比

时间:2019-07-08 21:08:26

标签: 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

1 个答案:

答案 0 :(得分:0)

我在评论中的意思是,您需要了解一些事情来计算剩余时间的百分比:计时器何时开始,何时结束以及每个刻度之间的间隔时间。我看不到您的其余代码,因此无法确定为什么它不起作用,但是我可以通过一个简单的示例演示该概念。创建一个全新的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()子项中的所有内容都只是设置标签和计时器,您真正需要关心的是保存开始倒数的DateTime(started),倒数结束的DateTime({ {1}}),并在timeOut事件内的每个刻度期间计算它们之间的差。我认为其中的代码是很容易解释的,但是总而言之,您只是看到tmr_Tick TimeSpan到timeOut还剩下多少时间,并将其显示为倒数计时器。对于百分比计算,您只需要查看总数中经过了多少秒即可获得百分比。然后,您只需要检查该百分比是否小于15,如果是,则更改文本颜色即可。