这是我的第一篇文章。 我正在尝试在Visual C#中的checkedlistbox中创建多个总和。有108个数字,每行一个,我试图将检查的项目与其余每一个相加并将其打印在文本框中。
我已经这样做了,但我认为这是不正确的。 这实际上是总和,但也与数字本身和整个事情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);
}
}
}
}
感谢您的帮助。
答案 0 :(得分: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());
}
你的问题非常不清楚,我不确定这是否是你想要的。
答案 1 :(得分: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();
}
}
}