Вложенные структуры управления (Visual Basic)

Инструкции элемента управления можно поместить в другие операторы элемента управления, например If...Then...Else блок в цикле For...Next . Как сообщается , вложено заявление элемента управления, размещенное внутри другого элемента управления.

Уровни вложения

Структуры управления в Visual Basic можно вложить в столько уровней, сколько нужно. Обычно рекомендуется сделать вложенные структуры более читаемыми, отступив тело каждого из них. Редактор интегрированной среды разработки (IDE) автоматически выполняет это.

В следующем примере процедура sumRows объединяет положительные элементы каждой строки матрицы.

Public Sub sumRows(ByVal a(,) As Double, ByRef r() As Double)  
    Dim i, j As Integer  
    For i = 0 To UBound(a, 1)  
        r(i) = 0  
        For j = 0 To UBound(a, 2)  
            If a(i, j) > 0 Then  
                r(i) = r(i) + a(i, j)  
            End If  
        Next j  
    Next i  
End Sub  

В предыдущем примере первый Next оператор закрывает внутренний For цикл, а последняя Next инструкция закрывает внешний For цикл.

Аналогичным образом, в вложенных If инструкциях операторы End If автоматически применяются к ближайшей предыдущей If инструкции. Do Вложенные циклы работают так же, как и внутренний оператор, соответствующий самому внутреннему DoLoop оператору.

Примечание.

Для многих структур управления при щелчке ключевое слово выделены все ключевое слово в структуре. Например, при щелчке IfIf...Then...Else по конструкции выделены все экземпляры If, Then, ElseElseIfа также End If в конструкции. Чтобы перейти к следующей или предыдущей выделенной ключевое слово, нажмите клавиши CTRL+SHIFT+СТРЕЛКА ВНИЗ или CTRL+SHIFT+СТРЕЛКА ВВЕРХ.

Вложение различных типов структур управления

Можно вложить одну структуру управления в другой тип. В следующем примере используется With блок внутри For Each цикла и вложенных If блоков внутри With блока.

For Each ctl As System.Windows.Forms.Control In Me.Controls  
    With ctl  
        .BackColor = System.Drawing.Color.Yellow  
        .ForeColor = System.Drawing.Color.Black  
        If .CanFocus Then  
            .Text = "Colors changed"  
            If Not .Focus() Then  
                ' Insert code to process failed focus.  
            End If  
        End If  
    End With  
Next ctl  

Перекрывающиеся структуры элементов управления

Вы не можете перекрывать структуры управления. Это означает, что любая вложенная структура должна быть полностью содержится в следующей внутренней структуре. Например, следующее расположение недопустимо, так как For цикл завершается до завершения внутреннего With блока.

Diagram that shows an example of invalid nesting.

Компилятор Visual Basic обнаруживает такие перекрывающиеся структуры управления и сигнализирует об ошибке во время компиляции.

См. также