SystemInformation.PowerStatus.BatteryLifePercent 匹配特定值时无法引发事件

Cannot rise events when SystemInformation.PowerStatus.BatteryLifePercent matches a specific value

我希望我的程序在笔记本电脑的电池电量达到 80% 时显示一个简单的对话框。我用过 SystemInformation.PowerStatus.BatteryLifePercent 为了达到同样的目的,并使用定时器事件来监视充电或放电时电池百分比的变化,并使用上述方法检查电池是否达到 80% 的电量。下面是我的代码。

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Timer1.Enabled = True
    TimerChargeMonitor.Interval = 100
    TimerChargeMonitor.Enabled = True
End Sub

Private Sub TimerChargeMonitor_Tick(sender As Object, e As EventArgs) Handles TimerChargeMonitor.Tick
    If SystemInformation.PowerStatus.BatteryLifePercent = 0.8 Then
        NotifBox.Show()
        TimerChargeMonitor.Enabled = False
    End If
End Sub

问题是它不起作用。当电池百分比达到 80% 或任何其他数字时,不会显示对话框。

您的代码需要一些调整:
SystemInformation.PowerStatus.BatteryLifePercentreturns单人
最好用 >= 来测试它,因为它的值可能与您在这里期望的值略有不同。

然后,您必须在显示 MessageBox 之前停止计时器(如果 NotifBox.Show() 是这样的话)。

因此您的代码将是:

If SystemInformation.PowerStatus.BatteryLifePercent >= 0.8 Then
    TimerChargeMonitor.Stop()
    NotifBox.Show()
End If

请注意,对于此应用程序,滴答间隔似乎太短了。
也许将其设置为 TimerChargeMonitor.Interval = 5000
(我不知道另一个计时器是干什么用的,在这里)。