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

标签 c# battery power-state batterymanager

所以我的方法如下:

PowerStatus powerStatus = SystemInformation.PowerStatus;

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

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

High,

Low,

Charging,

High Charging

Low, Charging

Low, Critical

这是一个奇怪的...0?

我想它与 BatteryChargeStatus Enum 有关

最佳答案

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

The value is zero if the battery is not being charged and the battery capacity is between low and high

所以自己编一个吧,比如:

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

关于c# - 调用 PowerStatus.BatteryChargeStatus.ToString() 有时会返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26124144/

相关文章:

c# - WCF 数据服务 SaveChanges() : "Resource not found for the segment"

arduino - 如何在 Arduino IDE 中将 4.15V 锂 ionic 电池的电池电压转换为电池百分比? (我正在制作某种 LED 电池指示灯)

c# - 暂停/恢复 PC 时,让 Windows 服务停止和正常启动的正确方法是什么?

c# - 如何在动态创建的 ASP.net 控件中动态创建 ASP.net 控件

c# - web.config 中的 session 状态

java - 我的 Android 应用程序正在耗尽电池电量吗?

android - 检测正在插入的设备

c++ - 如何确定 Windows 用户是否可以休眠(使用 C++)

c# - 如何在 Windows Phone 应用程序 (C#) 中显示上传进度?

android - Android系统如何以及何时发送ACTION_BATTERY_CHANGED粘性广播?