2012-11-28 67 views
6

我試圖顯示在消息框中這裏listBox1中的所選項目的代碼:獲取所選項目的文本在ListBox

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次,並且第一個項目

回答

6

foreach循環中的i具有您需要的索引。您正在使用只有第一個的listBox1.SelectedIndex。因此,項目應該是:

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

您可以通過迭代的項目,像這樣:

 foreach (var item in listBox1.SelectedItems) 
     { 
      MessageBox.Show(item.ToString()); 
     } 
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版本。

0

嘗試這種解決方案:

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