2016-06-23 9 views
0

У меня есть OwnerDrawFixed TabControl .. Так что, когда я пытаюсь удалить вкладку из этой конкретной TabControl с этим кодом:Ошибка генерируется при удалении вкладки из TabControl

For i As Integer = 0 To TabControl1.TabPages.Count - 1 
TabControl1.TabPages.RemoveAt(i) 
Next i 

он показывает мне ошибку, как:

недопустимое значение аргумента «1» не является допустимым для «индекс»

Что я должен сделать, чтобы исправить это?

ответ

2

недопустимое значение аргумента «1» не является допустимым для «индекс»

Фактическая ошибка, потому что, вероятно, не TabPage по этому индексу. Поскольку вы перебираете и удаляете TabPages, вам нужно Step в цикле при удалении элементов. Это предотвращает выход петли из индекса.

Поскольку вы удаляете все TabPages в любом случае, вы могли бы позвонить по методу Clear, , но, пожалуйста, не делайте этого. Ясный метод будет работать TabControl1.TabPages.Clear(), но он оставит объект, висящий вокруг свободной памяти. Вместо этого удалите объекты правильно.

 While tabControl1.TabCount > 0 
     TabControl1.TabPages(0).Dispose() 
    End While 

Это гарантирует, что объекты должным образом утилизированы быть помечены для удаления (вычищено сборщиком мусора).