Problemas al borrar controles
Publicado por Santi (4 intervenciones) el 02/11/2005 10:33:37
Hola de nuevo.
Tengo un problemilla al borrar controles que creo de forma dinámica. No sé por qué no me los borra todos. Os paso un ejemplo muy muy sencillo. Hay que añadir dos botones (button1, button2) y un label (label1) a un formulario.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CrearControles()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
BorrarControles()
End Sub
Private Sub CrearControles()
Dim contador As Integer
Dim o As Label
Dim x As Integer
Dim y As Integer
For x = 1 To 15
For y = 1 To 15
o = New Label
o.Size = New Size(20, 20)
o.Location = New Point(x * 21, y * 21)
o.BackColor = Color.DarkGray
o.Name = "borrar"
contador += 1
Me.Controls.Add(o)
Next
Next
Label1.Text = contador.ToString & " objetos creados"
End Sub
Private Sub BorrarControles()
Dim contador As Integer
For Each o As Control In Me.Controls
If Not IsNothing(o) Then
If o.Name = "borrar" Then
Me.Controls.Remove(o)
o.Dispose()
o = Nothing
contador += 1
End If
End If
Next
Label1.Text = contador.ToString & " objetos borrados"
End Sub
El programilla funciona así: al pulsar button1 se crean 225 labels, pero al pulsar button2 ¡sólo se borran la mitad! Si vuelvo a pulsar button2 ¡se vuelven a borrar la mitad de los que habían quedado! ¿Qué está pasando? ¿Por qué no se borran todos a la vez? ¿Qué hago mal?
¡Muchas gracias de nuevo a todos los que colaboráis en este foro!
Tengo un problemilla al borrar controles que creo de forma dinámica. No sé por qué no me los borra todos. Os paso un ejemplo muy muy sencillo. Hay que añadir dos botones (button1, button2) y un label (label1) a un formulario.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CrearControles()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
BorrarControles()
End Sub
Private Sub CrearControles()
Dim contador As Integer
Dim o As Label
Dim x As Integer
Dim y As Integer
For x = 1 To 15
For y = 1 To 15
o = New Label
o.Size = New Size(20, 20)
o.Location = New Point(x * 21, y * 21)
o.BackColor = Color.DarkGray
o.Name = "borrar"
contador += 1
Me.Controls.Add(o)
Next
Next
Label1.Text = contador.ToString & " objetos creados"
End Sub
Private Sub BorrarControles()
Dim contador As Integer
For Each o As Control In Me.Controls
If Not IsNothing(o) Then
If o.Name = "borrar" Then
Me.Controls.Remove(o)
o.Dispose()
o = Nothing
contador += 1
End If
End If
Next
Label1.Text = contador.ToString & " objetos borrados"
End Sub
El programilla funciona así: al pulsar button1 se crean 225 labels, pero al pulsar button2 ¡sólo se borran la mitad! Si vuelvo a pulsar button2 ¡se vuelven a borrar la mitad de los que habían quedado! ¿Qué está pasando? ¿Por qué no se borran todos a la vez? ¿Qué hago mal?
¡Muchas gracias de nuevo a todos los que colaboráis en este foro!
Valora esta pregunta
0