2014-09-30 64 views
2

所以我的方法如下:调用PowerStatus.BatteryChargeStatus.ToString()有时会返回0

PowerStatus powerStatus = SystemInformation.PowerStatus; 

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

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

高,

低,

充电,

高充电

低,充电

低,关键

和继承人的奇怪的... 0?

我想像它有事情做与BatteryChargeStatus Enum

+0

你的电池是平坦的:) – 2014-09-30 15:10:58

+0

那么为什么你不检查实际值返回,没有ToString()? – RenniePet 2014-09-30 15:11:08

+1

...那是一些很棒的标志值。未知包括所有其他状态标志! – Rawling 2014-09-30 15:17:33

回答

4

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

值是零,如果电池不充电,电池容量低,高

之间,正好弥补了自己,像:

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

好,我可以做的事情并不多,所以我的评论以上关于制造商搞砸是错误的。这个答案清楚地表明,问题是应该反映底层SYSTEM_POWER_STATUS操作系统声明的枚举定义缺少一个值。基础标志顶部的指定很差 - 0和255都是用于标志的愚蠢值。 – RenniePet 2014-09-30 15:33:01

+0

辉煌的答案。谢谢! – user1 2014-09-30 15:35:57

相关问题