2014-02-17 12 views
0

Я пытаюсь добавить выбранные значения из списка в массив или список , и я получаю странную ошибкусписок начинок/Массив петля

вот мой код

private void button3_Click(object sender, EventArgs e) 
     { 
      List<string> _AttName = new List<string>(); 
      for (int _i = 0; _i < listBox1.SelectedItems.Count; _i++) 
      { 

       if (listBox1.SelectedItem != null) 
       { 
-> Failes here -> _AttName.Add(listBox1.SelectedValue.ToString()); 
        listBox1.SetSelected(listBox1.SelectedIndex, false); 

       } 
      } 
     } 

или

private void button3_Click(object sender, EventArgs e) 
     { 
      string[] _AttName = new string[listBox1.SelectedItems.Count]; 
      for (int _i = 0; _i < listBox1.SelectedItems.Count; _i++) 
      { 

       if (listBox1.SelectedItem != null) 
       { 
        _AttName[_i] = listBox1.SelectedValue.ToString(); 
        listBox1.SetSelected(listBox1.SelectedIndex, false); 

       } 
      } 
     } 

здесь ошибка я получаю enter image description here

+0

Какое сообщение об ошибке вы получаете? – DGibbs

+0

только что обновил сообщение –

+0

Вы получаете ту же ошибку и с первой частью кода? Убедитесь, что 'listBox1.SelectedValue' не' null'. – DGibbs

ответ

1

Проблема: вы получите эту ошибку, потому что при привязке предметов к ListBox вы привязали только DisplayMemeber, но не ValueMember.

У вас нет Value, связанных с товарами в ListBox.

Вы можете использовать свойство SelectedItem, чтобы получить Деталь.

Заменить Это:

_AttName.Add(listBox1.SelectedValue.ToString()); 

с этим:

_AttName.Add(listBox1.SelectedItem.ToString()); 
0

Попробуйте это:

if (listBox1.SelectedItem != null && listBox1.SelectedValue != null) 
    { 

     _AttName.Add(listBox1.SelectedValue.ToString()); 
     listBox1.SetSelected(listBox1.SelectedIndex, false); 
    } 

Другое решение: (Вместо того, чтобы использовать ToString(), используйте Convert.ToString ())

if (listBox1.SelectedItem != null) 
    { 
     _AttName.Add(Convert.ToString(listBox1.SelectedValue)); // Convert.ToString() will handle the null. 
     listBox1.SetSelected(listBox1.SelectedIndex, false); 
    } 
Смежные вопросы