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.BatteryLifePercent
returns单人
最好用 >=
来测试它,因为它的值可能与您在这里期望的值略有不同。
然后,您必须在显示 MessageBox 之前停止计时器(如果 NotifBox.Show()
是这样的话)。
因此您的代码将是:
If SystemInformation.PowerStatus.BatteryLifePercent >= 0.8 Then
TimerChargeMonitor.Stop()
NotifBox.Show()
End If
请注意,对于此应用程序,滴答间隔似乎太短了。
也许将其设置为 TimerChargeMonitor.Interval = 5000
(我不知道另一个计时器是干什么用的,在这里)。
我希望我的程序在笔记本电脑的电池电量达到 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.BatteryLifePercent
returns单人
最好用 >=
来测试它,因为它的值可能与您在这里期望的值略有不同。
然后,您必须在显示 MessageBox 之前停止计时器(如果 NotifBox.Show()
是这样的话)。
因此您的代码将是:
If SystemInformation.PowerStatus.BatteryLifePercent >= 0.8 Then
TimerChargeMonitor.Stop()
NotifBox.Show()
End If
请注意,对于此应用程序,滴答间隔似乎太短了。
也许将其设置为 TimerChargeMonitor.Interval = 5000
(我不知道另一个计时器是干什么用的,在这里)。