Comment : exécuter plusieurs actions sur un objet
Mise à jour : novembre 2007
Dans Visual Basic, vous devez généralement spécifier un objet dans chaque instruction qui appelle l'une de ses méthodes ou qui accède à l'une de ses propriétés. Toutefois, si un ensemble d'instructions fonctionne sur le même objet, vous pouvez utiliser une structure With...End With pour spécifier une seule fois l'objet pour toutes les instructions. De cette façon, vos procédures s'exécutent plus vite et vous ne devez pas retaper de texte.
Exemple
L'exemple suivant définit la couleur de premier plan et le style de police d'un Label en fonction de la valeur d'un argument de procédure.
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
Notez l'utilisation de Or, opérateur (Visual Basic) pour associer des styles de police. Cette utilisation spécifie la combinaison souhaitée d'indicateurs binaires. And, opérateur (Visual Basic) aurait produit 0 parce que tous les membres d'énumération FontStyle utilisent des bits différents.
Notez également l'utilisation de Imports, instruction (espace de noms et type .NET) pour définir l'alias d'importation draw qui raccourcit et simplifie la lecture de chaque référence aux membres System.Drawing.
Vous pouvez également imbriquer des instructions With...End With les unes à l'intérieur des autres, comme dans le code suivant :
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
Toutefois, à l'intérieur de l'instruction With, la syntaxe fait référence à l'objet imbriqué ; les propriétés de l'objet de l'instruction With extérieure ne sont pas définies.
Voir aussi
Tâches
Comment : transférer un contrôle hors d'une structure de contrôle
Comment : supprimer une ressource système
Comment : accélérer l'accès à un objet comportant un chemin d'accès de qualification long
Concepts
Structures de contrôle imbriquées
Référence
With...End With, instruction (Visual Basic)