2016-08-15 5 views
0

У меня есть ListBox, который имеет й количество объектов, загруженное из текстового файла с этим кодом:VB.NET для каждого цикла не работает

Dim lines() As String = IO.File.ReadAllLines(Application.StartupPath() + "\file.txt") 
    List.Items.AddRange(lines) 

    Try 
     List.SelectedIndex = 0 
    Catch ex As Exception 

    End Try 

    Return True 

Он загружает их в порядке. Тогда я только пытаюсь Переберите их, как это:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    Dim num As Integer = 0 
    Dim item As Object 

    For Each item In List.Items 
     List.SelectedIndex = num 
     num += 1 
    Next 

End Sub 

ошибка, я получаю это:

Необработанное исключение типа «System.InvalidOperationException» произошло в System.Windows.Forms.dll

Дополнительная информация: Показать, что этот перечислитель обязан быть изменен. Перечислитель может использоваться только в том случае, если список не изменяется.

Я попытался загрузить список вручную, не помог. Любая помощь здесь?

+1

Что вы пытаетесь выполнить с помощью этой петли? – Fairy

+0

Только для изменения выбранного индекса. @Fairy – T1mpp4

+0

Никогда не используйте пустую попытку. Это скрывает проблемы. – LarsTech

ответ

1

Использование

For num = 0 To List.Items.Count - 1 
     List.SelectedIndex = num 
    Next 

И как @CodyGray справедливо отметил: Причиной этого является для-каждого цикла не может быть использована, если вы собираетесь изменить коллекцию элементов вы перечисляющих более.

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

+2

Вы должны объяснить * почему * вы должны это сделать. Другими словами, * почему * ваше решение устраняет проблему. (Для каждого цикла нельзя использовать, если вы собираетесь изменять коллекцию элементов, которые вы перечисляете.) –