首页 > 解决方案 > C#如何计算列表框选择的总和

问题描述

我的代码遇到问题,我向您解释我希望获得的内容:

  1. 我有一个带有字典的列表框,字典允许我将列表框的选择更改为更复杂的值

我的字典代码:

class RacesMask
{
    Dictionary<string, string> rMask = new Dictionary<string, string>();

    public RacesMask()
    {
        rMask.Add("Toutes", "-1");
        rMask.Add("Humains", "1");
        rMask.Add("Orcs", "2");
        rMask.Add("Nains", "3");
        rMask.Add("Elfes de la nuit", "4");
        rMask.Add("Mort-vivants", "5");
        rMask.Add("Taurens", "6");
        rMask.Add("Gnomes", "7");
        rMask.Add("Trolls", "8");
        rMask.Add("Gobelins", "9");
        rMask.Add("Elfes de Sang", "10");
        rMask.Add("Draeneis", "11");
        rMask.Add("Worgens", "22");
        rMask.Add("Pandarens", "24");
        rMask.Add("Sacrenuit", "27");
        rMask.Add("Tauren de Haut-Roc", "28");
        rMask.Add("Elfe du vide", "29");
        rMask.Add("Draeneï sancteforge", "30");
    }

    public Dictionary<string, string> GetRacesMask() { return rMask; }

}
  1. 现在,我希望当我选择我的 Listbox 的各种值时,它会进行计算,例如:

选择:人类(我的字典里有 1 个)和兽人(我的字典里有 2 个)

一个消息框向我显示结果 2 + 1 = 3

  1. 但是,实际上我的列表框只计算一个选定的值,而不计算其他值。

我的列表框代码:

private void listBox1_SelectedIndexChanged_1(object sender, EventArgs e)
    {
        RacesMask raceMask = new RacesMask();
        Dictionary<string, string> rM = raceMask.GetRacesMask();

        foreach (var rMask in listBox1.SelectedItems)
        {

            var selection1 = int.Parse(rM[rMask.ToString()]);
            var selection2 = int.Parse(rM[rMask.ToString()]);
            var total = selection1 + selection2;

            MessageBox.Show(total.ToString());

        }

当前结果的图片

预先感谢您的帮助

标签: c#foreachlistbox

解决方案


您可以在循环外有一个变量total,然后将 ListBox 中每个选定项目的值相加,total如:

int total = 0;
foreach (var rMask in listBox1.SelectedItems)
{

    selection = int.Parse(rM[rMask.ToString()]);
    total = total + selection;

}

MessageBox.Show(total.ToString()); // now show the result finally.

推荐阅读