Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 每个刻度比较两个变量_C# - Fatal编程技术网

C# 每个刻度比较两个变量

C# 每个刻度比较两个变量,c#,C#,我想写一个简单的程序来检查电池状态。我有一个计时器,它每秒钟都在滴答作响,我写了一些代码,但我认为它不是最有效的。 1.我不知道是否是这样,我如何检查电池的百分比是否与前一秒相同,是正确的。 2.如果我不检查MsgBox,则Label2和MsgBox文本中的百分比信息不会更新 class Battery { public static int BatteryPercentage() { PowerStatus ps = Syste

我想写一个简单的程序来检查电池状态。我有一个计时器,它每秒钟都在滴答作响,我写了一些代码,但我认为它不是最有效的。 1.我不知道是否是这样,我如何检查电池的百分比是否与前一秒相同,是正确的。 2.如果我不检查MsgBox,则Label2和MsgBox文本中的百分比信息不会更新

    class Battery
    {
       public static int BatteryPercentage()
       {
           PowerStatus ps = SystemInformation.PowerStatus;

           int percentage = Convert.ToInt32(ps.BatteryLifePercent * 100);

           return percentage;
       }
    }

    public static class MyClass
    {
        public static int LastPer { get; set; }
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        int per = Battery.BatteryPercentage();
        label2.Text = per.ToString();
        progressBar1.Value = per;

        if (MyClass.LastPer == 0)
        {
            MyClass.LastPer = per;
        }
        else if (MyClass.LastPer > per && per <= 100)
        {
            MessageBox.Show("Battery is almost empty, remain " + per.ToString()  + "!" );
        }
    }
class电池
{
公共静态int BatteryPercentage()
{
PowerStatus ps=SystemInformation.PowerStatus;
整数百分比=转换为32(ps.BatteryLifePercent*100);
回报率;
}
}
公共静态类MyClass
{
公共静态int LastPer{get;set;}
}
私有无效计时器1_刻度(对象发送方,事件参数e)
{
int per=电池。电池电量();
label2.Text=per.ToString();
progressBar1.值=每;
如果(MyClass.LastPer==0)
{
MyClass.LastPer=per;
}

否则,如果(MyClass.LastPer>per&&per我认为取消计时器并订阅Windows.Devices.Power.Battery类的报告更新事件会更有效

大意是

Battery.ReportUpdated += BatteryChargeLevelChanged;

public void BatteryChargeLevelChanged(object sender, EventArgs e)
{
    // show your message if the charge is low
}

您不应在计时器事件中使用MessageBox.Show(要进行调试,请使用Console.WriteLine)。在所有情况下,请在计时器1的开头禁用计时器,并在结尾重新启用它。还应将“MyClass.LastPer>per”替换为“MyClass.LastPer