Como: Executar várias ações em um objeto

No Visual Basic geralmente você deve especificar um objeto em cada instrução que chama um dos seus métodos ou acessa uma de suas propriedades.No entanto, se você tiver uma série de instruções que todos operam no mesmo objeto, você pode usar uma estrutura With... End With para especificar o objeto uma vez para todas as instruções.Isso pode tornar seus procedimentos mais rápidos e ajuda a evitar digitação repetitiva.

Exemplo

O exemplo a seguir define a cor de primeiro plano e estilo de fonte de uma Label dependendo do valor do argumento um procedimento.

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

Observe o uso de Operador Or (Visual Basic) para combinar os estilos de fonte.Especifica a combinação desejada de sinalizadores de bit.O Operador And (Visual Basic) deve ter produzido 0 porque todos os membros da enumeração FontStyle usam diferentes bits.

Observe também o uso de Declaração Imports (Tipo e Namespace .NET) para estabelecer o importação alias draw,que faz cada referência a System.Drawing membros mais curta e fácil de ler.

Você também pode aninhar instruções With...End With colocando uma dentro da outra, como no código a seguir:

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

Dentro da instrução With aninhada, no entanto, a sintaxe refere-se ao objeto aninhado; propriedades do objeto na instrução With externa não são definidas.

Consulte também

Tarefas

Como: transferência controle fora de uma estrutura de controle

Como: Descarte de um recurso do sistema

Como: Acelerar o acesso a um objeto com um longo caminho de qualificação

Conceitos

Estruturas de Decisão

Estruturas de loop

Outras estruturas de controle

Estruturas de controle aninhadas

Referência

Declaração With...End With (Visual Basic)

Outros recursos

Fluxo de controle no Visual Basic