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