Freigeben über


Geschachtelte Steuerelementstrukturen (Visual Basic)

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

Schachtelungsebenen

Steuerstrukturen in Visual Basic können in beliebig vielen Ebenen geschachtelt werden. Es ist üblich, geschachtelte Strukturen lesbarer zu machen, indem der Text der einzelnen Strukturen eingerückt wird. Der integrierte Entwicklungsumgebungs-Editor (IDE) führt dies automatisch aus.

Im folgenden Beispiel fügt die Prozedur sumRows 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 schließt 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

Bei vielen Steuerelementstrukturen werden beim Klicken auf ein Schlüsselwort alle Schlüsselwörter in der Struktur hervorgehoben. Wenn Sie beispielsweise in einer Konstruktion auf If klicken, werden alle Instanzen von If...Then...Else, If, Then, ElseIf und Else in der Konstruktion End If 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 wird ein With Block in einer For Each Schleife und ein geschachtelter If Block 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 Kontrollstrukturen

Kontrollstrukturen können nicht überlappen. Dies bedeutet, dass jede geschachtelte Struktur vollständig in der nächsten innersten Struktur enthalten sein muss. Die folgende Anordnung ist beispielsweise ungültig, da die For Schleife beendet wird, bevor der innere With Block beendet wird.

Diagramm einer ungültigen Schachtelung.

Der Visual Basic-Compiler erkennt solche überlappenden Kontrollstrukturen und signalisiert einen Kompilierungszeitfehler.

Siehe auch