C# C-更改值的多选列表框

C# C-更改值的多选列表框,c#,listbox,multi-select,C#,Listbox,Multi Select,我在多选框中有一些字符串,每次用户选择一个值时,它都会相应地更新,如下所示: if (lstSpecial.SelectedIndex == 0) { special1.Price = 18; } else if (lstSpecial.SelectedIndex == 1) { special1.Price = 25; } else i

我在多选框中有一些字符串,每次用户选择一个值时,它都会相应地更新,如下所示:

     if (lstSpecial.SelectedIndex == 0)
        {
            special1.Price = 18;

        }
        else if (lstSpecial.SelectedIndex == 1)
        {

            special1.Price = 25;

        }
        else if (lstSpecial.SelectedIndex == 2)
        {
            special1.Price = 40;

        }
        else if (lstSpecial.SelectedIndex == 3)
        {
            special1.Price = 30;

        }
这对我来说很好,但我如何才能做到,如果用户从列表框中选择了多个值,Special1.Price会分别存储每个值?我发现当我尝试选择2个或更多时,值会被最后选择的值覆盖

Price属性只是一个简单的get和set


谢谢

正如您所说,Price是一个属性,可能是int类型。它一次只能保存一个值。如果要保存多个值,则需要使用集合。您可以将价格声明为列表,然后可以将每个价格添加到if语句中。下面这行的东西。 声明您的价格属性,如:

public List<int> Price {get;set;}
这样,您将获得所有选定的价格。您可以使用以下方法检查它们:

foreach(int p in special1.Price)
{
Console.WriteLine(p);
}

我不确定您的类结构,但如果special类表示单个项目,那么最好有一个“special”集合,然后为每个“special”添加价格。要循环浏览列表框中的所有选定项目,您应该使用SelectedDices,它是选定项目从零开始的索引的集合

我有如果,否则如果。。。使用数组names prices,编写起来容易得多,如果lstSpecial包含4个以上的项,则最好在需要时进行扩展。您可能需要进行检查以避免边界失败

const int[] prices = new int[]{18,25,40,30};
int total = 0;
foreach(int index in lstSpecial.SelectedIndices)
    total += prices[index];
special1.Price = total;

…使Price成为一个可以实际处理多个值的数组或列表?此外,您可能需要使用。将listbox的SelectionMode属性更改为1。因为允许用户选择多个项目没有意义。
const int[] prices = new int[]{18,25,40,30};
int total = 0;
foreach(int index in lstSpecial.SelectedIndices)
    total += prices[index];
special1.Price = total;