Visual Basic 6.0 的 Controls 集合在 Visual Basic 2005 中
来源:百度文库 编辑:神马文学网 时间:2024/04/28 03:26:09
Visual Basic 6.0 的 Controls 集合在 Visual Basic 2005 中被替换为
概念差异
在 Visual Basic 6.0 中,Controls 集合是表示窗体或容器控件上的控件的元素的集合。
在 Visual Basic 2005 中,ControlCollection 类代替了 Controls 集合。窗体具有默认的 ControlCollection 类,可以使用语法 Me.Controls
访问。
Add 方法
在 Visual Basic 6.0 中,Controls 集合的 Add 方法是后期绑定的;通过将 Control 类指定为参数,在 Add 方法中创建控件。
在 Visual Basic 2005 中,在将控件添加到集合前,ControlCollection 类的
Remove 方法
Visual Basic 6.0 Controls 集合的 Remove 方法只能用于使用 Add 方法添加的控件;Visual Basic 2005 ControlCollection 类没有此限制。
计时器和菜单控件
在 Visual Basic 6.0 中,Timer 和 Menu 控件是 Controls 集合的成员。在 Visual Basic 2005 中,这些控件替换为
包含的控件
Visual Basic 6.0 Controls 集合包括作为容器控件的子控件的控件(如位于 Frame 控件上的控件);而 Visual Basic 2005 ControlCollection 类不是这样。要循环访问窗体上的所有控件,则必须递归循环访问每个容器控件的 Controls 类。
控件集合的代码更改
下面的示例演示 Visual Basic 6.0 和 Visual Basic 2005 在编码方法上的不同之处。
添加和移除控件的代码更改
下面的代码说明 Visual Basic 6.0 Controls 集合和 Visual Basic 2005 ControlCollection 类之间的差异。
' Visual Basic 6.0Private 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 2005Private 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
循环访问控件集合的代码更改
下面的代码展示的函数循环访问窗体上的所有控件,然后清除所有
' Visual Basic 6.0Private Sub ClearChecks() For Each Control in Me.Controls If TypeOf Control Is CheckBox Then Control.Value = vbUnchecked End If NextEnd Sub
' Visual Basic 2005Private 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 NextEnd Sub
升级说明
由于 Visual Basic 6.0 和 Visual Basic 2005 Controls 集合之间的差异,对 Add 方法的调用不进行升级。必须添加代码才能使用 Add 方法重新创建应用程序的这一行为。