调用PowerStatus.BatteryChargeStatus.ToString()有时会返回0

时间:2014-09-30 15:06:07

标签: c# battery power-state batterymanager

所以我的方法如下:

PowerStatus powerStatus = SystemInformation.PowerStatus;

if (powerStatus.BatteryChargeStatus != BatteryChargeStatus.NoSystemBattery)
{
    var batteryStatus = powerStatus.BatteryChargeStatus.ToString()
}

从我的测试系统中我得到了各种各样的结果,例如:

  

高,

     

低,

     

充电,

     

高收费

     

低,充电

     

低,严重

并且这是一个奇怪的人... 0?

我想象它与BatteryChargeStatus Enum

有关

1 个答案:

答案 0 :(得分:4)

他们错过了一个。来自基础SYSTEM_POWER_STATUS操作系统声明的文档:

  

如果电池未充电且电池容量介于低和高之间,则该值为零

所以,只需编造自己的,如:

    var status = SystemInformation.PowerStatus.BatteryChargeStatus;
    if (status != BatteryChargeStatus.NoSystemBattery) {
        var batteryStatus = status == 0 ? "Not charging" : status.ToString();
        // etc...
    }