Compartir a través de


Cómo: Realizar varias acciones en un objeto (Visual Basic)

En Visual Basic generalmente se debe especificar un objeto en cada instrucción que llame a uno de sus métodos o que tenga acceso a una de sus propiedades. Sin embargo, si tiene una serie de instrucciones que operan en un mismo objeto, puede utilizar una estructura With...End With para especificar el objeto solo una sola vez para todas las instrucciones. De este modo puede acelerar la ejecución de los procedimientos y evitar la escritura repetitiva.

Ejemplo

El ejemplo siguiente establece el color del primer plano y el estilo de fuente de Label según el valor de un argumento de procedimiento.

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

Tenga en cuenta el uso de Or (Operador, Visual Basic) para combinar los estilos de fuente. Especifica la combinación deseada de marcadores de bits. And (Operador, Visual Basic) habría generado 0 porque todos los miembros de enumeración FontStyle utilizan bits diferentes.

También tenga en cuenta el uso de Instrucción Imports (Tipo y espacio de nombres de .NET) para establecer draw de alias de importación, lo que facilita la lectura y acorta la referencia a los miembros System.Drawing.

También se pueden anidar instrucciones With...End With situándolas una dentro de otra, como en el código siguiente:

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

Sin embargo, en la instrucción anidada With, la sintaxis hace referencia al objeto anidado; las propiedades del objeto en la instrucción With externa no están establecidas.

Vea también

Tareas

Cómo: Transferir el control fuera de una estructura de control (Visual Basic)

Cómo: Deshacerse de un recurso del sistema (Visual Basic)

Cómo: Acelerar el acceso a un objeto con una ruta de acceso de calificación larga (Visual Basic)

Referencia

With...End With (Instrucción, Visual Basic)

Conceptos

Estructuras de decisión (Visual Basic)

Estructuras de bucles (Visual Basic)

Estructuras de control adicionales (Visual Basic)

Estructuras de control anidadas (Visual Basic)

Otros recursos

Flujo de control en Visual Basic