Estruturas de controle aninhadas
Você pode colocar instruções de controle dentro Outros controlar instruções, por exemplo um If...Then...Else Bloquear dentro de um For...Next loop. Uma demonstrativo de controle colocada dentro de outra demonstrativo de controle é considerada aninhados.
Níveis de aninhamento
Estruturas de controle em Visual Basic podem ser aninhadas para tantos níveis quanto desejar. É prática comum para facilitar a leitura estruturas aninhadas recuando o corpo de cada um deles.O editor do IDE (ambiente) de desenvolvimento integrado automaticamente faz isso.
No exemplo a seguir, o procedimento sumRows Adiciona juntos positivos elementos 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 o último Next demonstrativo fecha o externo For loop.
Da mesma forma, no aninhados If instruções, o End If instruções se aplicam automaticamente para o mais próximo antes If demonstrativo. Aninhados Do loops de trabalhar no modo semelhante, com o interno Loop demonstrativo correspondente o interno Do demonstrativo.
Aninhamento de diferentes tipos de estruturas de controle
Você pode aninhar um tipo de estrutura de controle em outro tipo.O exemplo a seguir utiliza 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
Sobreposição de estruturas de controle
Não é possível sobrepor estruturas de controle.Isso significa que qualquer estrutura aninhada deve estar completamente contida dentro da estrutura mais interna do próxima.Por exemplo, a seguinte organização é inválido porque o For loop é encerrado antes interno With bloco termina.
Aninhamento inválido de para e com estruturas
The Visual Basic compilador detecta essas estruturas de controle sobrepostos e sinais de um erro em time de compilar.
Consulte também
Tarefas
Como: transferência controle fora de uma estrutura de controle