2012-11-28 72 views
6

Tôi đang cố gắng để hiển thị các mục đã chọn của listBox1 trong một tin nhắn Box đây là các mã:Nhận văn bản của mục đã chọn trong một ListBox

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

Vấn đề là khi tôi chọn nhiều hơn một mục sự hộp tin nhắn hiển thị hộp thoại mà tôi đã chọn và lặp lại thông báo EX: nếu tôi chọn 3 mục, thông báo sẽ xuất hiện 3 lần với mục đầu tiên

Trả lời

6

i trong vòng lặp foreach có chỉ mục bạn cần. Bạn đang sử dụng listBox1.SelectedIndex chỉ có giá trị đầu tiên. Vì vậy, mục nên là:

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

Bạn có thể lặp qua các mục của bạn như sau:

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

Làm thế nào hộp khoảng 1 tin nhắn với tất cả các mục được chọn không?

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)); 

Nếu có bất kỳ mục nào được chọn, điều này sẽ cung cấp cho bạn một dòng cho từng mục được chọn trong hộp thư của bạn. Có lẽ một cách đẹp hơn để làm điều này với LINQ nhưng bạn đã không chỉ định phiên bản .NET.

0

Hãy thử giải pháp sau:

string item = "";  
foreach (var i in listBox1.SelectedIndices) 
    { 
     item += listBox1.Items[(int)i] + Environment.NewLine; 
    } 
MessageBox.Show(item); 
Các vấn đề liên quan