2014-01-31 43 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(); 
}