Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Управляющие конструкции можно поместить в другие управляющие конструкции, например, блок 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 обнаруживает такие перекрывающиеся структуры управления и сигнализирует об ошибке во время компиляции.