Visual Basic 6.0 的 Controls 集合在 Visual Basic 2005 中被替換為
在 Visual Basic 6.0 中,Controls 集合是表示窗體或容器控件上的控件的元素的集合。
在 Visual Basic 2005 中,ControlCollection 類代替了 Controls 集合。窗體具有默認(rèn)的 ControlCollection 類,可以使用語(yǔ)法 Me.Controls
訪問(wèn)。
在 Visual Basic 6.0 中,Controls 集合的 Add 方法是后期綁定的;通過(guò)將 Control 類指定為參數(shù),在 Add 方法中創(chuàng)建控件。
在 Visual Basic 2005 中,在將控件添加到集合前,ControlCollection 類的
Visual Basic 6.0 Controls 集合的 Remove 方法只能用于使用 Add 方法添加的控件;Visual Basic 2005 ControlCollection 類沒(méi)有此限制。
在 Visual Basic 6.0 中,Timer 和 Menu 控件是 Controls 集合的成員。在 Visual Basic 2005 中,這些控件替換為
Visual Basic 6.0 Controls 集合包括作為容器控件的子控件的控件(如位于 Frame 控件上的控件);而 Visual Basic 2005 ControlCollection 類不是這樣。要循環(huán)訪問(wèn)窗體上的所有控件,則必須遞歸循環(huán)訪問(wèn)每個(gè)容器控件的 Controls 類。
下面的示例演示 Visual Basic 6.0 和 Visual Basic 2005 在編碼方法上的不同之處。
下面的代碼說(shuō)明 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 | ![]() |
---|---|
' 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 |
下面的代碼展示的函數(shù)循環(huán)訪問(wèn)窗體上的所有控件,然后清除所有
![]() | |
---|---|
' 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 | ![]() |
---|---|
' 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 集合之間的差異,對(duì) Add 方法的調(diào)用不進(jìn)行升級(jí)。必須添加代碼才能使用 Add 方法重新創(chuàng)建應(yīng)用程序的這一行為。
聯(lián)系客服