2013-05-23 2 views
4

Эй, ребята, в настоящее время имеет следующий кодзначение массива в список

Я пытаюсь вставить значения в ListBox, а затем иметь возможность прибегать значения в алфавитном порядке и повторно отобразить их в том же ListBox. По какой-то причине код не работает (без ошибок - только тогда, когда я нажать на кнопку ListBox очищает)

protected void sortButton_Click(object sender, ImageClickEventArgs e) 
{ 
    string[] movieArray = new string [cartListBox.Items.Count]; 

    for (int i = 0; i < cartListBox.Items.Count; i++) 
    { 
     movieArray[i] = cartListBox.Items[i].ToString(); 
    } 

    Array.Sort(movieArray); 

    cartListBox.Items.Clear(); 

    for (int i = 0; i < cartListBox.Items.Count; i++) 
    { 
     cartListBox.Items.Add(movieArray[i].ToString()); 
    } 

} 

ответ

8

Я думаю, что проблема в последнем цикле.

ли что нравится следующим образом:

cartListBox.Items.Clear(); 

    for (int i = 0; i < movieArray.Length; i++) 
    { 
     cartListBox.Items.Add(movieArray[i].ToString()); 
    } 

Когда вы очищаете cartListBox.Items.Clear();, не следует принимать за счетчик цикла, как, for (int i = 0; i < cartListBox.Items.Count; i++)

cartListBox.Items.Count создавал проблемы.

+0

Ah Спасибо вы! Я вижу, что я сделал сейчас, когда я очищаю список элементов listbox.items.count сбрасывается до 0 :) спасибо! –

0
cartListBox.Items.Count // is 0 length 

вы делаете в предыдущем шаге:

cartListBox.Items.Clear(); 
0

Вы можете избежать всего, что зацикливание, и вашу ошибку, делая это более современный способ:

var items = cartListBox.Items 
    .Select(item => item.ToString()) 
    .OrderBy(x => x); 

cartListBox.Items.Clear(); 

cartListBox.Items.AddRange(items); 
Смежные вопросы