Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
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 indicadores 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
Cómo: Deshacerse de un recurso del sistema
Cómo: Acelerar el acceso a un objeto con una ruta de acceso de calificación larga
Conceptos
Estructuras de control adicionales
Estructuras de control anidadas
Referencia
Instrucción With...End With (Visual Basic)