2014-01-31 41 views
-3

我有一个winform,有很少的组合框,texboxes等等...所以我想通过点击btnAdd从txtTotal中的txtStake乘以值,但每次当我单击btnAdd时,我也想要乘以结果。执行乘法,文本框

//For example: 
//click-1, txtStake = 2, txtTotal = 2; 
//click-2, txtStake = 2, txtTotal = 4; 
//click-3, txtStake = 3, txtTotal = 12; 
//click-3, txtStake = 4.5 txtTotal = 54; Ok? How to do that? Thanks. 
-------------------------------------------------------------------- 

class Multy 
{   
    public decimal Stake; 

    public Multy() 
    {} 
} 

private List<Multy> matches = new List<Multy>(); 

private void btnAdd_Click(object sender, EventArgs e) 
    { 
     matches = new List<Multy>(); 
     Multy match = new Multy(); 

     match.Stake = decimal.Parse(txtStake.Text); 

     matches.Add(match); 

     decimal l_Stake; 

     string strStake; 

     string strOutputLine; 

     foreach (Multy m in matches) 
     {    
      l_Stake = m.Stake; 

      strStake = l_Stake.ToString(); 
     } 
     txtTotal.text = //code? 
    } 
+0

您正在创建一个新的(空)'matches'的每次点击列表。这可能不是你想要的。 –

回答

0

我真的不明白为什么要添加一个元素到列表中,然后使用的foreach ...如果你想乘txtStake值与txtTotal当前值,那么只要做到以下几点:

decimal result,value; 
if(decimal.TryParse(txtStake.Text,out result) 
    && decimal.TryParse(txtTotal.Text,out value)) 
     txtTotal.Text = (result * value).ToString(); 
else if(decimal.TryParse(txtStake.Text,out result)) 
     txtTotal.Text = result.ToString(); 

而且你Multy类是完全没有意义的,你可以使用List<decimal>

0

基本上,你问这个(没有错误处理,随意提高它):

private void btnAdd_Click(object sender, EventArgs e) 
{ 
    var stake = decimal.Parse(txtStake.Text); 
    var total = decimal.Parse(txtTotal.Text); 
    total *= stake; 
    txtTotal.Text = total.ToString(); 
} 

但是代码中有很多事情要做。 MultyListforeach

0

你可能想是这样的:

private List<Multy> matches = new List<Multy>(); 

private void btnAdd_Click(object sender, EventArgs e) 
{ 
    // do NOT create a new 'matches' list, use the existing one 
    Multy match = new Multy(); 
    match.Stake = decimal.Parse(txtStake.Text); 
    // you should use "TryParse" here, what if the user entered "A"? 
    matches.Add(match); 

    decimal runningTotal = 1m; // base value 

    foreach (Multy m in matches) 
    {    
     runningTotal = runningTotal * m.Stake; 
    } 
    txtTotal.text = runningTotal.ToString(); 
}