2013-04-16 57 views
1

這是我的第一篇文章。 我想在Visual C#的checkedlistbox中做多個總和。有108個數字,每行一個,我試圖將檢查的項目與其餘的每個項目進行彙總,並將其打印在文本框中。checkedlistbox加上其他號碼

我已經這樣做了,但我認爲這是不正確的。 這實際上是總和,但也與數字本身和整個事情108次

我想添加選中的數字與其餘數字在複選框。

private void button2_Click(object sender, EventArgs e) 
{ 
    foreach(string checkednumber in checkedlistbox1.CheckedItems) 
    { 
     double x = Convert.ToDouble(checkednumber); 

     double a = 0; 
     for (double y = 0; y < checkedlistbox1.Items.Count; ++y) 
     { 
     foreach (string othernumbers in checkedlistbox1.Items) 
     { 
      double z = Convert.ToDouble(othernumbers); 
      sum = x + z; 
      string str = Convert.ToString(sum); 
      listbox1.Items.Add(str); 
     } 
     } 
    } 
} 

感謝您的任何幫助。

+1

所以你認爲這是不正確的。爲什麼?你看到什麼行爲? – tnw

+1

我毫不懷疑,這是不正確的,但由於某種原因,你有一個雙重嵌套循環,重複循環相同的項目,所以一些真正奇怪的事情與'x','a'和'z'(你需要爲變量選擇更好的名稱)。 – tnw

+0

OP?我的答案的任何輸入? – tnw

回答

2

你只想總結檢查項目的數字?

double sum = 0; 

foreach(object checkedItem in checkedlistbox1.CheckedItems) 
{ 
    try 
    { 
     sum += Convert.ToDouble(checkedItem.ToString()); 
    } 
    catch (FormatException e) {} //catch exception where checkedItem is not a number 

    listbox1.Items.Add(sum.ToString()); 
} 

你的問題令人難以置信的不清楚,我不確定這是否是你想要的。

+0

OP也似乎困惑,爲什麼他有這麼多的結果被輸出 - 可能值得包括結果添加到'listbox1'來幫助那個 – VisualMelon

+0

@VisualMelon是的,可能是因爲他有它在三個循環內哈哈。我會補充一點。 – tnw

0

你也可以使用linq來實現它。

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      var result = from num in this.checkedListBox1.CheckedItems.OfType<string>() 
         select Convert.ToInt32(num); 
      this.textBox1.Text = result.Sum().ToString(); 
     } 
    } 
}