我在多选框中有一些字符串,每次用户选择一个值时,它都会相应更新,如下所示:
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属性只是一个简单的获取和设置。
由于
答案 0 :(得分:1)
要遍历列表框中的所有选定项目,您应该使用SelectedIndices,它是所选项目的零基础索引的集合。
我有if-else if ...有一个数组名称价格,它更容易编写,并且如果需要更好地扩展(如果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;
答案 1 :(得分:0)
价格是你说的一个属性,可能是int类型。它一次只能容纳一个值。如果要保存多个值,则需要使用集合。您可以将价格声明为列表,然后您就可以在if语句中添加每个价格。以下内容。
声明您的Price属性,如:
public List<int> Price {get;set;}
然后:(在以下场景中最好使用switch)
if (lstSpecial.SelectedIndex == 0)
{
special1.Price.Add(18);
}
else if (lstSpecial.SelectedIndex == 1)
{
special1.Price.Add(25);
}
else if (lstSpecial.SelectedIndex == 2)
{
special1.Price.Add(40);
}
else if (lstSpecial.SelectedIndex == 3)
{
special1.Price.Add(30);
}
这样您就可以获得所有选定的价格。您可以使用以下方式检查它们:
foreach(int p in special1.Price)
{
Console.WriteLine(p);
}
我不确定你的类结构,但如果特殊类代表一个单独的项目,那么最好有一个'特殊'的集合,然后为每个单元添加价格