Geschachtelte Steuerungsstrukturen (Visual Basic)

Sie können Steuerelementanweisungen in anderen Steuerelementanweisungen platzieren, z. B. in einem If...Then...Else-Block innerhalb einer For...Next-Schleife. Eine in einer anderen Steuerelementanweisung platzierte Steuerelementanweisung gilt als geschachtelt.

Schachtelungsebenen

Steuerelementstrukturen in Visual Basic können auf beliebig vielen Ebenen geschachtelt werden. Es ist üblich, geschachtelte Strukturen lesbarer zu machen, indem der Text der einzelnen Strukturen eingerückt wird. Der IDE-Editor (integrierte Entwicklungsumgebung) nimmt dies automatisch vor.

Im folgenden Beispiel fügt die sumRows-Prozedur die positiven Elemente jeder Zeile der Matrix zusammen.

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  

Im vorherigen Beispiel schließt die erste Next-Anweisung die innere For-Schleife, und die letzte Next-Anweisung die äußere For-Schleife.

Ebenso gelten in geschachtelten If-Anweisungen die End If-Anweisungen automatisch für die nächsthöhere If-Anweisung. Geschachtelte Do-Schleifen funktionieren auf ähnliche Weise, wobei die innerste Loop-Anweisung mit der innersten Do-Anweisung übereinstimmt.

Hinweis

Wenn Sie bei vielen Steuerelementstrukturen auf ein Schlüsselwort klicken, werden alle Schlüsselwörter in der Struktur hervorgehoben. Wenn Sie beispielsweise in einer If...Then...Else-Konstruktion auf If klicken, werden alle Instanzen von If, Then, ElseIf, Else und End If in dieser Konstruktion hervorgehoben. Um zum nächsten oder vorherigen hervorgehobenen Schlüsselwort zu gelangen, drücken Sie STRG+UMSCHALT+NACH-UNTEN-TASTE bzw. STRG+UMSCHALT+NACH-OBEN-TASTE.

Schachteln verschiedener Arten von Steuerelementstrukturen

Sie können eine Art von Steuerelementstruktur in einer anderen schachteln. Im folgenden Beispiel werden ein With-Block innerhalb einer For Each-Schleife und geschachtelte If-Blöcke innerhalb des With-Blocks verwendet.

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  

Überlappende Steuerelementstrukturen

Steuerelementstrukturen dürfen sich nicht überlappen. Dies bedeutet, dass jede geschachtelte Struktur vollständig in der nächsten innersten Struktur enthalten sein muss. Beispielsweise ist die folgende Anordnung ungültig, da die For-Schleife beendet wird, ehe der innere With-Block beendet wird.

Diagram that shows an example of invalid nesting.

Der Visual Basic-Compiler erkennt solche überlappenden Steuerelementstrukturen und signalisiert einen Kompilierzeitfehler.

Weitere Informationen