Partilhar via


Estruturas de controle aninhado (Visual Basic)

Você pode colocar instruções de controle dentro de outras instruções de controle, por exemplo um If...Then...Else Bloquear dentro de um For...Next loop. Uma demonstrativo de controle colocado dentro de outra demonstrativo de controle é considerado aninhadas.

Níveis de aninhamento

Estruturas de controle Visual Basic podem ser aninhadas para tantos níveis que desejar. É prática comum para facilitar a leitura estruturas aninhadas recuando o corpo de cada um deles. O desenvolvimento integrado do ambiente (IDE) editor faz isso automaticamente.

No exemplo a seguir o procedimento sumRows adiciona, juntos, os elementos positivos de cada linha da matriz.

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

No exemplo anterior, o primeiro Next demonstrativo fecha interno For loop e a última Next demonstrativo fecha o externo For loop.

Da mesma forma, aninhados em If instruções, o End If instruções automaticamente aplicar ao mais próximo antes If demonstrativo. Aninhado Do loops funcionam de maneira semelhante, com interno Loopinterno de correspondência dedemonstrativo Dodemonstrativo.

ObservaçãoObservação

For many control structures, when you click a keyword, all of the keywords in the structure are highlighted. Por exemplo, quando você clica em If em um If...Then...Else construção, todas as instâncias de If, Then, ElseIf, Else, e End If na construção são realçadas. Para mover para a realçado anterior ou seguinte palavra-chave, pressione CTRL + SHIFT + seta para baixo ou CTRL + SHIFT + seta para cima. For more information, see Como: Use o realce de referência.

O aninhamento de diferentes tipos de estruturas de controle

Você pode aninhar um tipo de estrutura de controle dentro de outro tipo. O exemplo a seguir usa um With Bloquear dentro de um For Each loop e aninhados If bloqueia dentro do With bloco.

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

Sobrepondo as estruturas de controle

Não é possível sobrepor estruturas de controle. Isso significa que qualquer estrutura de aninhada deve estar totalmente contido a mais interna próxima estrutura. Por exemplo, a organização a seguir é inválido porque a For loop é encerrado antes de interno With bloco finaliza.

Aninhamento inválido de para e com estruturas

Diagrama gráfico de aninhamento inválido

O Visual Basic compilador detecta estruturas de controle como sobreposto e sinaliza uma compilar- errode tempo.

Consulte também

Tarefas

Como: Transferir controle para fora de uma estrutura de controle (Visual Basic)

Conceitos

Estruturas de decisão (Visual Basic)

Estruturas de loop (Visual Basic)

Outras estruturas de controle (Visual Basic)

Outros recursos

Fluxo de controle no Visual Basic