簡體   English   中英

C#-多選列表框更改值

[英]C# - Multi Select List Box changing values

我在多重選擇框中有一些字符串,每當用戶選擇一個值時,它都會相應地更新,如下所示:

     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屬性只是一個簡單的獲取和設置。

謝謝

要遍歷列表框中的所有選定項,應使用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;

正如您所說,Price是一個屬性,可能是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);
}

我不確定您的類結構,但是如果特殊類代表一個項目,那么最好收集“特殊”類,然后為每個類添加價格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM