10

我正在尝试在消息框中显示 listBox1 的选定项目,这是代码:

int index;
string  item;
foreach (int i in listBox1 .SelectedIndices )
{
    index = listBox1.SelectedIndex;
    item = listBox1.Items[index].ToString ();
    groupids = item;
    MessageBox.Show(groupids);
}

问题是当我选择多个项目时,消息框会显示我选择的第一个项目并重复消息 EX:如果我选择了 3 个项目,则该消息将与第一个项目一起出现 3 次

4

4 回答 4

15

您可以像这样遍历您的项目:

        foreach (var item in listBox1.SelectedItems)
        {
            MessageBox.Show(item.ToString());
        }
于 2012-11-28T20:56:05.173 回答
7

iforeach 循环中有您需要的索引。您正在使用listBox1.SelectedIndex其中只有第一个。所以项目应该是:

item = listBox1.Items[i].ToString ();
于 2012-11-28T20:54:09.830 回答
4

包含所有选定项目的 1 个消息框怎么样?

List<string> selectedList = new List<string>();
foreach (var item in listBox1.SelectedItems) {
   selectedList.Add(item.ToString());
}
if (selectedList.Count() == 0) { return; }
MessageBox.Show("Selected Items: " + Environment.NewLine +
        string.Join(Environment.NewLine, selectedList));

如果选择了任何一个,这应该为您的消息框中的每个选定项目提供一行。使用 linq 可能有一种更漂亮的方法,但您没有指定 .NET 版本。

于 2012-11-28T21:08:40.673 回答
2

试试这个解决方案:

string  item = "";    
foreach (int i in listBox1.SelectedIndices )
    {
       item += listBox1.Items[i] + Environment.NewLine;
    }
MessageBox.Show(item);
于 2014-01-26T08:45:06.863 回答