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 di controllo nidificate
Riferimenti
Istruzione With...End With (Visual Basic)