Главная Руководство по раскрутке сайтов

  

Изменения кода для добавления и удаления элементов управления

В следующем примере кода демонстрируются различия между коллекцией Controls Visual Basic 6.0 и классом Control..::.ControlCollection в Visual Basic 2008:
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
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 формы включает только те элементы, которые размещены непосредственно на форме,
поэтому для каждого элемента управления, имеющего дочерние объекты, производится рекурсивный вызов функции.
Private Sub ClearChecks()
For Each Control in Me.Controls
If TypeOf Control Is CheckBox Then
Control.Value = vbUnchecked
End If
Next
End Sub
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
Хостинг от uCoz