我正在使用以下代码在达到充电水平时显示消息框
private void timer1_Tick(object sender, EventArgs e)
{
battery = Convert.ToInt32(power.BatteryLifePercent * 100);
while (battery == 100)
{
MessageBox.Show("charging full disconnect the charger");
}
}
此代码正常运行。但它不止一次显示消息框。 我只想展示一次。
谢谢
答案 0 :(得分:0)
如果没有更多信息,很难确定实际问题。但是,您可以通过使用变量来跟踪是否已显示消息来快速解决问题。
PowerStatus power = SystemInformation.PowerStatus;
int battery = 0;
bool battery_message_shown = false;
if( battery == 100 && battery_message_shown == false )
{
battery_message_shown = true;
MessageBox.Show("charging full");
}
虽然理想情况下,除非是时候显示消息,否则不会调用此代码。我需要看到更大的图片来解决这个问题。
答案 1 :(得分:0)
与while循环相关的条件永远不会按照编码方式到达。这就是为什么循环体将继续执行。
您需要嵌入更改或刷新条件的代码。但是,如果这样做,程序将消耗大量资源,因为电池充电过程通常很耗时。你需要做的是做一个thread.sleep可能会持续一段时间或更好但是使用计时器。
此代码示例正在执行类似的操作,在您的情况下可能值得查看: BlackWasp-PowerStatusCheck