Condividi tramite


Procedura: eseguire più operazioni su un oggetto

Aggiornamento: novembre 2007

In Visual Basic, di solito, è necessario specificare un oggetto in ogni istruzione che ne chiama un metodo o che accede a una delle relative proprietà. Se tuttavia è presente una serie di istruzioni eseguite tutte sullo stesso oggetto, è possibile utilizzare una struttura With...End With per specificare l'oggetto una sola volta per tutte le istruzioni. Questo accorgimento consente di velocizzare l'esecuzione delle routine e di evitare l'inserimento di codice ripetitivo.

Esempio

Nell'esempio che segue viene impostato il colore di primo piano e lo stile del tipo di carattere di un'Label in base al valore dell'argomento di una routine.

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

Per combinare gli stili dei tipi di carattere, viene utilizzato l'Operatore Or (Visual Basic). In questo modo si specifica la combinazione di flag di bit desiderata. L'Operatore And (Visual Basic) avrebbe prodotto 0 in quanto tutti i membri dell'enumerazione FontStyle utilizzano bit diversi.

Si osservi anche l'utilizzo dell'Istruzione Imports (tipo e spazio dei nomi .NET) per stabilire l'alias di importazione draw che rende più breve e leggibile ciascun riferimento ai membri System.Drawing.

È inoltre possibile nidificare le istruzioni With...End With inserendole l'una nell'altra, come nel codice seguente:

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

All'interno dell'istruzione With nidificata, tuttavia, la sintassi fa riferimento all'oggetto nidificato. Le proprietà dell'oggetto nell'istruzione With esterna non vengono impostate.

Vedere anche

Attività

Procedura: trasferire un controllo fuori da una struttura di controllo

Procedura: eliminare una risorsa di sistema

Procedura: velocizzare l'accesso a un oggetto con un percorso di qualificazione lungo

Concetti

Strutture decisionali

Strutture di ciclo

Altre strutture di controllo

Strutture di controllo nidificate

Riferimenti

Istruzione With...End With (Visual Basic)

Altre risorse

Flusso di controllo in Visual Basic