2013-12-15 34 views
1

定時器我希望計時器停止時,圖像NUMBER等於零。不能停止在C#

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語句被禁用。

+2

['Timer.Stop'(http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.stop( v = vs.110)的.aspx)? –

+9

ImageNumber1永遠不會等於0,因爲您總是增加它 – BlackBear

+0

將您的返回語句*放在* if塊中。 –

回答

3

我想要的定時器在ImageNumber等於零時停止。

你似乎已經知道如何做到這一點,假設Health_Regen是一個Timer則:

Health_Regen.Enabled = false; 

將禁用您Timer

如果我在第一個if語句之後添加return語句,第二個if語句被禁用。

這是可以預料的,因爲您正在使用return關鍵字,該關鍵字可防止在同一代碼塊內執行任何操作之後的任何內容。

您的問題並不完全符合您要求清楚,但是,我從您的評論中認爲第二條if語句未執行,即使Timer已禁用,您要更新HealthBar.Image值?如果是這樣那麼類似下面應該工作,你

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"; 
} 
+0

謝謝我得到它的工作 – Ohunter

0

你應該只能夠調用計時器實例停止方法。

if (ImageNumber == 0) 
{ 
    Health_Regen.Stop(); 
} 
+1

+0:雖然好的建議不會幫助Ohunter,因爲'Enabled = false'實現了大致相同的並且已經存在於代碼中。 –

+0

當我將其替換爲「只有賦值,調用,遞增,遞減,等待和新的對象表達式可以用作語句」時,我得到的所有內容「 – Ohunter

+0

好吧,我忘了」()「,但是當我達到0時跳到1,我必須再次下降到0 – Ohunter

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
等等等等..