今天学习使用控件集合

MSDN还是很有用的,下面都是MSDN中来的。

Visual Basic 2008 中的 Control..::.ControlCollection 类取代了 Visual Basic 6.0 Controls 集合。

说明: “折叠”图像概念差异

Visual Basic 6.0 中,Controls 集合是表示窗体或容器控件上的控件的元素的集合。

Visual Basic 2008 中,Control..::.ControlCollection 类取代了 Controls 集合。窗体具有默认的 Control..::.ControlCollection 类,可以使用语法 Me.Controls 访问。

Add 方法

Visual Basic 6.0 中,Controls 集合的 Add 方法是后期绑定的;控件是通过指定 Control 类作为参数在 Add 方法中创建的。

Visual Basic 2008 中,Control..::.ControlCollection 类的 Add 方法要求先使用 New 关键字创建控件,再将控件添加到集合中。

Remove 方法

Visual Basic 6.0 Controls 集合的 Remove 方法只能用于使用 Add 方法添加的控件;而 Visual Basic 2008 Control..::.ControlCollection 类则没有此限制。

计时器和菜单控件

Visual Basic 6.0 中,Timer Menu 控件是 Controls 集合的成员。在 Visual Basic 2008 中,这些控件由 Timer 以及 MainMenu ContextMenu 组件取代;组件不是 Control..::.ControlCollection 类的成员。

包含的控件

Visual Basic 6.0 Controls 集合包含作为容器控件子级的控件(如位于 Frame 控件上的控件);而 Visual Basic 2008 Control..::.ControlCollection 类不是这样。要循环访问窗体上的所有控件,则必须递归循环访问每个容器控件的 Controls 类。

说明: “折叠”图像控件集合的代码更改

下面的示例说明 Visual Basic 6.0 Visual Basic 2008 在编码方法上的不同之处。

添加和移除控件的代码更改

下面的代码说明 Visual Basic 6.0 Controls 集合与 Visual Basic 2008 Control..::.ControlCollection 类之间的差异。

 

说明: “复制”图像复制代码

' 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 

说明: “复制”图像

' Visual Basic 2008

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

循环访问控件集合的代码更改

下面的代码展示的函数循环访问窗体上的所有控件,然后清除所有 CheckBox 控件。本示例假定 CheckBox 控件位于 GroupBox Panel 控件上,而不是窗体上。在 Visual Basic 2008 示例中,由于窗体的 Controls 集合仅包含直接位于窗体上的控件,因此对于具有子级的任何控件,该函数递归调用自身。

 

说明: “复制”图像复制代码

' 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 

说明: “复制”图像

' Visual Basic 2008

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

说明: “折叠”图像升级说明

由于 Visual Basic 6.0 Visual Basic 2008 Controls 集合之间存在差异,因此对 Add 方法的调用不进行升级。必须添加代码才能使用 Add 方法重新创建应用程序的这一行为。

说明: “折叠”图像请参见

参考

Control..::.Controls

Form..::.ControlCollection

说明: “页脚”图像

发送反馈意见,就此主题向 Microsoft 发送反馈意见。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值