Académique Documents
Professionnel Documents
Culture Documents
Diferencias conceptuales
En Visual Basic 6.0, las matrices de controles se podían utilizar para administrar los
controles de un formulario; proporcionaban funciones para compartir controladores
de eventos, recorrer en iteración grupos de controles y agregar controles en tiempo
de ejecución.
En Visual Basic 6.0, se podían usar matrices de controles para especificar un grupo
de controles que compartían un conjunto de eventos. Los controles debían ser del
mismo tipo y tenían que tener el mismo nombre.
Visual Basic 2005 permite a cualquier controlador de eventos controlar los eventos
de varios controles, incluso los controles con nombres diferentes y de tipos
distintos.
Por ejemplo, es posible que quiera agregar dos controles Button (Button1 y
Button2) y un control CheckBox (CheckBox1) a un formulario y, a continuación,
crear un controlador de eventos a fin de controlar el evento Click para los tres
controles.
Copiar
Private Sub MixedControls.Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click, Button2.Click,
CheckBox1.Click
Los controles de Visual Basic 2005 no tienen una propiedad Index pero puede
seguir recorriendo en iteración los controles de un formulario o contenedor
mediante ControlCollection de la clase Control.
En Visual Basic 6.0, los controles de una única matriz de control podían encontrarse
en contenedores diferentes. Por ejemplo, los controles TextBox contenidos en dos
controles Frame diferentes podían formar parte de la misma matriz de control.
En Visual Basic 6.0, los controles se podía agregar a una matriz de control en
tiempo de ejecución mediante la instrucción Load. Los controles tenían que ser del
mismo tipo que la matriz de control y ésta se debía crear en tiempo de diseño con
al menos un elemento. Después de agregar el control, la propiedad Visible debía
establecerse en True.
En Visual Basic 2005, debe definir los controladores de eventos para los controles
que se agregan en tiempo de ejecución. Esto se realiza mediante la instrucción
AddHandler.
Case 0
MsgBox("The text in the first TextBox has changed")
Case 1
Case 2
End Select
End Sub
VB
Copiar
' Visual Basic 2005
Private Sub TextBoxes_TextChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles TextBox1.TextChanged, _
TextBox2.TextChanged, TextBox3.TextChanged
Select Case DirectCast(sender, TextBox).Name
Case TextBox1.Name
MsgBox("The text in the first TextBox has changed")
Case TextBox2.Name
MsgBox("The text in the second TextBox has changed")
Case TextBox3.Name
MsgBox("The text in the third TextBox has changed")
End Select
End Sub
Nota
El comportamiento de eventos es ligeramente diferente en Visual Basic 2005. El
evento TextChanged se produce cuando se inicializa un control (por ejemplo, en
el evento Form_Load) así como cuando se cambia texto en tiempo de ejecución. En
Visual Basic 6.0, el evento Change sólo se producía cuando se cambiaba texto.
En Visual Basic 2005, un objeto Control se pasa como un argumento; tiene una
colección ControlCollection que incluye todos los controles que se encuentran en
ese control. El operador Typeof se utiliza para determinar si cada control es de tipo
TextBox.
Nota
Un objeto Form es de tipo Control; también puede pasar un objeto Form como un
argumento.
Como no se incluyen controles anidados en la colección ControlCollection, el
método HasChildren se utiliza para determinar si un control contiene otros
controles, en ese caso, se llama a la función ClearText de forma recursiva.
For i = 0 To Text1().UBound
Text1(i).Text = ""
Next
End Sub
VB
Copiar
' Visual Basic 2005
Private Sub ClearText(ByVal container As Control)
Dim ctrl As Control
For Each ctrl In container.Controls
If TypeOf (ctrl) Is TextBox Then
ctrl.Text = ""
End If
If ctrl.HasChildren Then
ClearText(ctrl)
End If
Next
End Sub
Load Text1(1)
Text1(1).Visible = True
VB
Copiar
' Visual Basic 2005
' Declare a new TextBox.
Dim TextBox2 As New TextBox
' Set the location below the first TextBox
TextBox2.Left = TextBox1.Left
TextBox2.Top = TextBox1.Top + 30
' Add the TextBox to the form's Controls collection.
Me.Controls.Add(TextBox2)
AddHandler TextBox2.TextChanged, AddressOf TextChangedHandler
Notas de actualización
Cuando una aplicación creada con Visual Basic 6.0 se actualiza a Visual Basic 2005,
cualquier matriz de control se actualiza a las clases de matrices de controles
específicas del control especial. Estas clases están contenidas en el espacio de
nombres Microsoft.VisualBasic.Compatibility.VB6 y las utilizan las
herramientas de actualización para emular el comportamiento de las matrices de
controles de Visual Basic 6.0.