Condividi tramite


Procedura: eseguire più operazioni su un oggetto (Visual Basic)

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 annidare 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 annidata, tuttavia, la sintassi fa riferimento all'oggetto annidato. Le proprietà dell'oggetto nell'istruzione With esterna non vengono impostate.

Vedere anche

Attività

Procedura: trasferire un controllo fuori da una struttura di controllo (Visual Basic)

Procedura: eliminare una risorsa di sistema (Visual Basic)

Procedura: velocizzare l'accesso a un oggetto con un percorso di qualificazione lungo (Visual Basic)

Riferimenti

Istruzione With...End With (Visual Basic)

Concetti

Strutture decisionali (Visual Basic)

Strutture di ciclo (Visual Basic)

Altre strutture di controllo (Visual Basic)

Strutture di controllo annidate (Visual Basic)

Altre risorse

Flusso di controllo in Visual Basic