2012-08-16 103 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(); 
}