C# Listbox.items[i]。Selected仅捕获第一个选定项

C# Listbox.items[i]。Selected仅捕获第一个选定项,c#,for-loop,listbox,listboxitem,C#,For Loop,Listbox,Listboxitem,我正试图在一个列表框中循环所有我选择的值,并将它们添加到一个字符串中。但是,当我执行下面的循环时,我得到的是列表框中的第一个选定项,而没有后续选定项。有人能看出我哪里做错了吗 我试过一步一步地看,但它似乎没有意识到这些项目已经被选中了。可能吧。所选的并不像我期望的那样工作,这适用于所有已选择要拾取的项目 string selectedItem = ""; if (impactedServicesData.Items.Count > 0)

我正试图在一个列表框中循环所有我选择的值,并将它们添加到一个字符串中。但是,当我执行下面的循环时,我得到的是列表框中的第一个选定项,而没有后续选定项。有人能看出我哪里做错了吗

我试过一步一步地看,但它似乎没有意识到这些项目已经被选中了。可能吧。所选的并不像我期望的那样工作,这适用于所有已选择要拾取的项目

       string selectedItem = "";
            if (impactedServicesData.Items.Count > 0)
            {
                for (int i = 0; i < impactedServicesData.Items.Count; i++)
                {
                    if (impactedServicesData.Items[i].Selected)
                    {
                        if (selectedItem == "")
                        {
                            selectedItem = impactedServicesData.Items[i].Value;
                        }
                        else
                        {
                            selectedItem += "," + impactedServicesData.Items[i].Value;
                        }
                    }
                }
            }

确保已正确设置允许选择多个项目

然后,对于多选列表框,可以使用获取所有选定项的集合

您的代码可以重新编写为:

string selectedItem = "";
foreach (var s in impactedServicesData.SelectedItems)
{
    if (selectedItem == "")
    {
        selectedItem = s.Value;
    }
    else
    {
        selectedItem += "," + s.Value;
    }
}

还考虑在循环中连接多个字符串时使用A。

确保设置正确,允许多个项选择。

然后,对于多选列表框,可以使用获取所有选定项的集合

您的代码可以重新编写为:

string selectedItem = "";
foreach (var s in impactedServicesData.SelectedItems)
{
    if (selectedItem == "")
    {
        selectedItem = s.Value;
    }
    else
    {
        selectedItem += "," + s.Value;
    }
}

还考虑在循环中连接多个字符串时使用A。