今天学习使用控件集合

来源:互联网 发布:qt多进程 和linux通讯 编辑:程序博客网 时间:2024/06/06 07:45

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.0Controls 集合的Remove方法只能用于使用Add方法添加的控件;而Visual Basic 2008Control..::.ControlCollection类则没有此限制。

计时器和菜单控件

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

包含的控件

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

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

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

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

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

 

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

' Visual Basic6.0

Private SubCommand1_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 newTextBox.

    IfControls.Count > 1 Then

       MsgBox (Controls("Text1").Text)

   End If

    'Remove the new control.

   Controls.Remove (Text1)

    'The following line causes a compilationerror.

    'You cannot remove controls added at designtime.

   Controls.Remove (Command1)

End Sub

VisualBasic 

说明: “复制”图像

' Visual Basic2008

PrivateSub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)HandlesButton1.Click

    'Create a new TextBox control.

   Dim TextBox1 As New System.Windows.Forms.TextBox

   TextBox1.Name = "TextBox1"

    ' Add the new controlto 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 Basic6.0

Private SubClearChecks()

   For Each Control in Me.Controls

       If TypeOf Control Is CheckBox Then

           Control.Value = vbUnchecked

       End If

   Next

End Sub

VisualBasic 

说明: “复制”图像

' Visual Basic2008

PrivateSub 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 containercontrols.

       If ctl.HasChildren Then

           ClearChecks(ctl)

       End If

   Next

End Sub

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

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

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

参考

Control..::.Controls

Form..::.ControlCollection

说明: “页脚”图像

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

 

0 0
原创粉丝点击