我希望计时器在ImageNumber等于零时停止。
private void Health_Regen_Tick(object sender, EventArgs e)
{
if (ImageNumber1 == 0)
{
Health_Regen.Enabled = false;
}
if (ImageNumber1 < 20)
{
ImageNumber1 += 1;
HealthBar.Image = Image.FromFile(path + ImageNumber1.ToString() + ".png");
}
}
如果我在第一个if语句后添加一个return语句,则第二个if语句被禁用。
答案 0 :(得分:3)
我希望计时器在ImageNumber等于零时停止。
您似乎已经知道如何执行此操作,假设Health_Regen
是Timer
,那么:
Health_Regen.Enabled = false;
将停用您的Timer
。
如果我在第一个if语句后添加一个return语句,则第二个if语句被禁用。
这是预期的,因为您正在使用return
关键字,这将阻止执行相同代码块之后的任何内容。
你的问题并没有完全明确你所要求的问题,但是,我假设你的评论中没有执行第二个if语句,你想要更新HealthBar.Image
值,即使Timer
} 被禁用?如果是这样,那么下面的内容应该对你有用
private void Health_Regen_Tick(object sender, EventArgs e)
{
if (ImageNumber1 == 0)
{
Health_Regen.Enabled = false;
}
else if (ImageNumber1 <= 20)
{
ImageNumber1 += 1;
}
HealthBar.Image = Image.FromFile(path + ImageNumber1.ToString() + ".png";
}
答案 1 :(得分:0)
您应该只能在计时器实例上调用停止方法。
if (ImageNumber == 0)
{
Health_Regen.Stop();
}
答案 2 :(得分:0)
这只是猜测!。
替换
if (ImageNumber1 == 0)
与
if (ImageNumber1 >= 20)
当ImageNumber1等于0时,你的计时器已经停止,但它永远不会倒数到0
此外,如果你将ImageNumber1
更改为0.它可能已经在运行计时器,它将增加一个和skip
止动器,所以几乎就像你现在基于运气一样编码它的方式。
如果在计时器已经运行时更改ImageNumber1
,则会运气。
试试这个:
if (ImageNumber1 == 0) {
Health_Regen.Enabled = false;
} else if (ImageNumber1 < 20) {
ImageNumber1 += 1;
HealthBar.Image = Image.FromFile(path + ImageNumber1.ToString() + ".png");
}
幸运的是,你可以做的最好的事情就是在计时器之外停止计时器ImageNumber1 = 0;
最佳修复:
另外一个更好的解决方案是修复你的程序从ImageNumber1 = 20
开始,然后继续下降到0 ..当它命中0时停止计时器......你不应该把它弄得这么混乱你所要做的就是以新的顺序重命名几个png文件!而不是
1.png现在它将是20.png
2.png现在它将是19.png
等等......