Поделиться через


Практическое руководство. Выполнение нескольких действий над объектом (Visual Basic)

Обычно в Visual Basic в каждой инструкции, которая вызывает один из методов объекта или обращается к одному из его свойств, должен задаваться этот объект. Однако, если есть последовательность инструкций, работающих с одним и тем же объектом, то можно использовать структуру With...End With, чтобы указать объект один раз для всех инструкций. Это ускоряет выполнение процедур и позволяет избежать ввода лишнего текста.

Пример

В следующем примере устанавливается цвет изображения и стиль шрифта для Label в зависимости от значения аргумента процедуры.

Imports draw = System.Drawing
' The preceding statement must appear at the beginning of the source file.
Dim alertLabel As New System.Windows.Forms.Label
Sub alertUser(ByVal value As Long)
    With alertLabel
        If value = 0 Then
            .ForeColor = draw.Color.Red
            .Font = New draw.Font(.Font, draw.FontStyle.Bold Or draw.FontStyle.Italic)
        Else
            .Forecolor = draw.Color.Black
            .Font = New draw.Font(.Font, draw.FontStyle.Regular)
        End If
    End With
End Sub

Обратите внимание на использование Оператор Or (Visual Basic) для сочетания стилей шрифтов. Это позволяет установить требуемое сочетание битовых флагов. Операция Оператор And (Visual Basic) даст 0 в результате, поскольку все члены перечисления FontStyle используют различные биты.

Также обратите внимание на использование Оператор Imports (пространство имен .NET и тип) для создания псевдонима импорта draw, что делает каждую ссылку на члены System.Drawing короче и более читабельной.

Можно также использовать вложенные инструкции With...End With, помещая одну в другую, как это сделано в следующем коде:

Sub setupForm()
    Dim anotherForm As New System.Windows.Forms.Form
    Dim button1 As New System.Windows.Forms.Button
    With anotherForm
        .Show()
        .Top = 250
        .Left = 250
        .ForeColor = System.Drawing.Color.LightBlue
        .BackColor = System.Drawing.Color.DarkBlue
        .Controls.Add(button1)
        With .Controls.Item(1)
            .BackColor = System.Drawing.Color.Thistle
            .Text = "Text on button1"
        End With
    End With
End Sub

Во вложенной инструкции With есть ссылка на вложенный объект. Свойства объекта во внешней инструкции With не устанавливаются.

См. также

Задачи

Практическое руководство. Передача управления за пределы структуры управления (Visual Basic)

Практическое руководство. Удаление системного ресурса (Visual Basic)

Практическое руководство. Увеличение скорости доступа к объекту с длинным классификационным путем (Visual Basic)

Ссылки

Оператор With... End With (Visual Basic)

Основные понятия

Структуры решений (Visual Basic)

Циклические структуры (Visual Basic)

Другие структуры управления (Visual Basic)

Вложенные структуры управления (Visual Basic)

Другие ресурсы

Управление ходом выполнения в Visual Basic