【问题标题】:Get text of selected items in a ListBox获取列表框中所选项目的文本
【发布时间】:2012-11-16 20:10:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

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

            foreach (var item in listBox1.SelectedItems)
            {
                MessageBox.Show(item.ToString());
            }
    

    【讨论】:

      【解决方案2】:

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

      item = listBox1.Items[i].ToString ();
      

      【讨论】:

        【解决方案3】:

        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 版本。

        【讨论】:

          【解决方案4】:

          试试这个解决方案:

          string  item = "";    
          foreach (int i in listBox1.SelectedIndices )
              {
                 item += listBox1.Items[i] + Environment.NewLine;
              }
          MessageBox.Show(item);
          

          【讨论】:

          • 我喜欢这个答案,因为它让人们可以轻松访问索引和值。
          猜你喜欢
          • 1970-01-01
          • 2011-06-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多