2012-08-16 83 views
0

我的大腦絕對在這裏炒。很抱歉(無疑)這個明顯的問題,但我看不到樹木的木材!C#減少或增加變量(如點購買系統)?

我有一個變量,充當「點池」。數字下降控制會影響此點池。如果我增加numupdown,點池減少,反之亦然。我只是不能提前讓我的頭周圍的邏輯:(

這裏是我的「代碼」這是非常值得...

private void numJobSkill1_ValueChanged(object sender, EventArgs e) 
    { 

     int difference = (int)(numJobSkill1.Value - numJobSkill1.Minimum); 

     /* if (numJobSkill1.Value > numJobSkill1.Minimum) 
     { 

      POINTPOOL = POINTPOOL - 1; 

     } 
     else 
     { 
      POINTPOOL = POINTPOOL + 1; 
     } */ 

     lblPOINTPOOL.Text = PLAYERPOINTS.ToString(); 

    } 

感謝。

+0

你想做什麼? – aliboy38 2012-08-16 08:03:32

+0

現在我的大腦被炸了!什麼是numJobSkill1.Value和numJobSkill1.Minimum以及爲什麼將差異轉換爲int?什麼是問題? – JTMon 2012-08-16 08:07:10

+0

好的,澄清。 POINTPOOL = 100. numJobSkill = 5.當jobskill增加10時,POINTPOOL = 90.如果jobskill減少到7,POINTPOOL = 93。 – 2012-08-16 08:33:51

回答

1

要確定值是否有。被增加或減少你需要記住的最後一個值

// initialize this with the initial value of the UpDownControl 
private int _previousValue; 

private void numJobSkill1_ValueChanged(object sender, EventArgs e) 
{ 
    int currentValue = numJobSkill1.Value; 
    _pointPool -= currentValue - _previousValue; 
    _previousValue = currentValue; 
} 
+0

非常感謝Daniel。幾乎在那裏,我只需要修復它,以便在用戶輸入數字而不是單擊旋轉框時起作用。再次感謝! – 2012-08-16 08:33:17

+0

@HarryBall:不客氣。請檢查我的編輯,它應該解決問題。 – 2012-08-16 08:35:22

-1

試試這個:

private void numJobSkill1_ValueChanged(object sender, EventArgs e) 
    { 

     int difference = (int)(numJobSkill1.Value - numJobSkill1.Minimum); 

     if (difference > 0) 
     { 
      difference--; 
     } 
     else 
     { 
      difference++; 
     } 

     lblPOINTPOOL.Text = difference.ToString(); 

    } 
0

我認爲最簡單的方法來處理這將使PointPool函數,而不是一個變量,其中返回值是TotalPointsAvailable - TotalPointAllocated,TotalPointsAllocated是numJobSkill1中的值,但它可能很容易是幾個updown的總和。

private void numJobSkill1_ValueChanged(object sender, EventArgs e) 
{ 
    PLAYERPOINTS = PointPool(); 
    lblPOINTPOOL.Text = PLAYERPOINTS.ToString(); 

} 

private Int32 TotalPointsAvailable; 

private Int32 TotalPointsAllocated() 
{ 
    //Value is a decimal 
    return (Int32)numJobSkill1.Value; 
} 

private Int32 PointPool() 
{ 
    return TotalPointsAvailable-TotalPointsAllocated(); 
}