With...End With, instruction (Visual Basic)

Mise à jour : novembre 2007

Exécute un ensemble d'instructions faisant continuellement référence à un objet ou à une structure unique.

With object
    [ statements ]
End With

Éléments

  • object
    Obligatoire. Variable ou expression. Peut avoir pour valeur tout type de données, y compris des types élémentaires.

  • statements
    Facultatif. Une ou plusieurs instructions entre With et End With qui s'exécutent sur object.

  • End With
    Obligatoire. Met fin à la définition du bloc With.

Notes

With...End With permet d'appliquer une série d'instructions à l'objet spécifié, sans désigner à chaque fois le nom de l'objet. Si le chemin d'accès de qualification à l'objet est long, l'utilisation de With...End With peut améliorer vos performances. Un bloc With permet également d'éviter les frappes répétées du chemin d'accès de qualification et les erreurs de frappe d'un de ses éléments.

Par exemple, pour modifier plusieurs propriétés d'un seul objet, placez les instructions d'assignation de propriétés dans With...End With ; vous ne faites ainsi référence qu'une seule fois à l'objet, au lieu de le faire à chaque assignation de propriété.

Règles

  • Types de données. Le type de données de object peut être un type de classe ou de structure, ou même un type élémentaire Visual Basic, tel que Integer. Le .NET Framework prend en charge tous les types élémentaires contenant des classes ou des structures, dont les membres sont accessibles dans un bloc With.

  • Déclaration. Vous devez déclarer object avant d'entrer le bloc With. Vous ne pouvez pas le déclarer dans l'instruction With.

  • Nombre d'itérations. Un bloc With n'est pas une construction itérative. Les instructions ne s'exécutent qu'une seule fois sauf si le bloc contient une boucle.

  • Imbrication des structures. Vous pouvez imbriquer des structures With...End With en plaçant une structure à l'intérieur d'une autre. Pour un exemple, consultez Comment : exécuter plusieurs actions sur un objet.

    Toutefois, les membres des instructions externes étant masqués dans les instructions internes, vous devez fournir dans une instruction With interne une référence d'objet complète pour tous les membres d'un objet figurant dans un bloc With externe.

    Vous pouvez également imbriquer divers types de structures de contrôle l'un dans l'autre. Pour plus d'informations, consultez Structures de contrôle imbriquées.

  • Transfert en dehors de la structure. Visual Basic ne prend pas en charge Exit, instruction (Visual Basic) pour transférer le contrôle hors d'un bloc With. Si vous souhaitez quitter avant que toutes les instructions ne soient exécutées, insérez une étiquette sur l'instruction End With et utilisez le GoTo, instruction pour créer une branche vers cette dernière. Pour plus d'informations, consultez Comment : étiqueter des instructions.

    Vous ne pouvez pas transférer le contrôle de l'extérieur d'un bloc With vers l'intérieur de celui-ci, ou de l'intérieur de celui-ci vers l'extérieur. Vous pouvez appeler une procédure de l'intérieur du bloc, mais le contrôle retourne à l'instruction suivante.

  • Accès aux autres objets. Une fois que vous avez entré un bloc With, vous ne pouvez pas réassigner object tant que vous n'avez pas passé l'instruction End With Vous pouvez dès lors accéder aux méthodes et aux propriétés de l'objet spécifié uniquement sans les qualifier. Vous pouvez utiliser des méthodes et des propriétés pour les autres objets, mais vous devez les désigner par leurs noms d'objets.

Exemple

L'exemple ci-dessous utilise un bloc With pour exécuter une série d'instructions sur un seul objet. Il suppose que l'objet testObject a déjà été créé et expose les propriétés référencées.

With testObject
    .Height = 100
    .Text = "Hello, World"
    .ForeColor = System.Drawing.Color.Green
    .Font = New System.Drawing.Font(.Font, _
        System.Drawing.FontStyle.Bold)
End With

Mot clé With dans les initialiseurs d'objets

Visual Basic 2008 introduit une nouvelle utilisation de With dans les initialiseurs d'objets. Pour plus d'informations et d'exemples, consultez Initialiseurs d'objets : types nommés et anonymes et Types anonymes.

Voir aussi

Tâches

Comment : exécuter plusieurs actions sur un objet

Comment : étiqueter des instructions

Concepts

Structures de contrôle imbriquées

Initialiseurs d'objets : types nommés et anonymes

Types anonymes

Référence

Exit, instruction (Visual Basic)

GoTo, instruction