Вложенные структуры управления (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
Вложенные циклы работают так же, как и внутренний оператор, соответствующий самому внутреннему Do
Loop
оператору.
Примечание.
Для многих структур управления при щелчке ключевое слово выделены все ключевое слово в структуре. Например, при щелчке If
If...Then...Else
по конструкции выделены все экземпляры If
, Then
, Else
ElseIf
а также 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
блока.
Компилятор Visual Basic обнаруживает такие перекрывающиеся структуры управления и сигнализирует об ошибке во время компиляции.