Coleção controles para usuários do Visual Basic 6.0

O Visual Basic 6.0 Controls coleção é substituída pelo Control.ControlCollection classe na Visual Basic 2008.

Diferenças Conceituais

No Visual Basic 6.0, a Controls coleção é uma coleção com elementos que representam o s controle em um formulário ou container controle.

In Visual Basic 2008, o Control.ControlCollection classe substitui o Controls coleção. Os formulários têm um padrão de Control.ControlCollection classe que pode ser acessado usando a sintaxe Me.Controls.

Método Add

In Visual Basic 6.0, o Add método para o Controls coleção é limite de forma tardia; controles são criados no Add método, especificando o Control classe sistema autônomo um argumento.

In Visual Basic 2008, o Add método para o Control.ControlCollection classe requer que os controles tenham sido criados usando o New palavra-chave antes de serem adicionados à coleção.

Método Remove

The Remove method of the Visual Basic 6.0 Controls collection could only be used for controls that were added using the Add method; the Visual Basic 2008 Control.ControlCollection class does not have this restriction.

Timer e Controles de Menu

In Visual Basic 6.0, o Timer e Menu controles são membros das Controls coleção. In Visual Basic 2008, esses controles são substituídos pela Timer e MainMenu ou ContextMenu componentes; componentes não são membros do Control.ControlCollection classe.

Controles contidos

The Visual Basic 6.0 Controls collection includes controls that are children of a container control (for example, controls sited on a Frame control); the Visual Basic 2008 Control.ControlCollection class does not.Para iterar em todos os controles em um formulário, você deve recursivamente iterar a Controls classe de cada controle de contêiner.

Alterações código para a coleção Controls

Os exemplos a seguir ilustram as diferenças na codificação técnicas entre o Visual Basic 6.0 e Visual Basic 2008.

Alterações código para adicionar remover controles

The following code illustrates differences between the Visual Basic 6.0 Controls collection and the Visual Basic 2008 Control.ControlCollection class.

' Visual Basic 6.0
Private Sub Command1_Click()
    ' Declare a new Control variable.
    Dim c As Control
    ' Create and add the new control.
    Set c = Controls.Add("VB.TextBox", "Text1")
    ' Make the new control visible.
    c.Visible = True
    ' Set the initial text.
    c.Text = "Hello"
    ' Retrieve the text from the new TextBox.
    If Controls.Count > 1 Then
        MsgBox (Controls("Text1").Text)
    End If
    ' Remove the new control.
    Controls.Remove (Text1)
    ' The following line causes a compilation error.
    ' You cannot remove controls added at design time.
    Controls.Remove (Command1)
End Sub
' Visual Basic
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    ' Create a new TextBox control.
    Dim TextBox1 As New System.Windows.Forms.TextBox
    TextBox1.Name = "TextBox1"
    ' Add the new control to the form's Controls collection.
    Me.Controls.Add(TextBox1)
    ' No need to set Visible property.
    ' Set the initial text.
    TextBox1.Text = "Hello"
    ' Retrieve the text from the new TextBox.
    If Me.Controls.Count > 1 Then
        MsgBox(Me.Controls("TextBox1").Text)
    End If
    ' Remove the new control.
    Me.Controls.Remove(TextBox1)
    ' Remove the control added at design time.
    Me.Controls.Remove(Button1)
End Sub

Alterações código para iterar através da coleção Controls

O código a seguir ilustra uma função para iterar em todos os controles em um formulário e então desmarcando todos os CheckBox controles. Este exemplo assume que o CheckBox controles estão situados em GroupBox ou Panel controles em vez de no formulário. No Visual Basic 2008 exemplo, desde que o formulário Controls coleção inclui somente controles situados diretamente no formulário, a função recursivamente chama a própria para qualquer controle que possui filhos.

' Visual Basic 6.0
Private Sub ClearChecks()
    For Each Control in Me.Controls
        If TypeOf Control Is CheckBox Then
            Control.Value = vbUnchecked
        End If
    Next
End Sub
' Visual Basic
Private Sub ClearChecks(ByVal Container As Control)
    Dim ctl As Control
    Dim chk As CheckBox
    For Each ctl In Container.Controls
        If TypeOf ctl Is CheckBox Then
            chk = ctl
            chk.Checked = False
        End If
        ' Recursively call this function for any container controls.
        If ctl.HasChildren Then
            ClearChecks(ctl)
        End If
    Next
End Sub

Observações de Atualização

Because of differences between Visual Basic 6.0 and the Visual Basic 2008 Controls collections, calls to the Add method are not upgraded.Você deve adicionar código para recriar o comportamento do seu aplicativo usando o novo Add método.

Consulte também

Referência

Control.Controls

Form.ControlCollection