Matriz de controles

11/08/2004 - 17:11 por Fernando Balderrama | Informe spam
Según sé, VB .NET no maneja matrices de controles; pero tiene la palabra
clave Handles que permite utilizar el mismo procediemiento para diferentes
controles. He intentado hacerlo pero no logro resultados.
Alguien me puede ayudar?


Gracias


Fernando

Preguntas similare

Leer las respuestas

#6 Eduardo A. Morcillo [MS MVP VB]
11/08/2004 - 21:40 | Informe spam
Voy a analizar 'AddHandler', me parece que por ahi va la cosa, de
todas maneras si tienes otra sugerencia te lo agradecería.



Si, en ese caso deberas usar AddHandler que te permite asociar un metodo con
un evento en tiempo de ejecucion.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#7 Fernando Balderrama
11/08/2004 - 21:55 | Informe spam
Muchas gracias Eduardo.


"Eduardo A. Morcillo [MS MVP VB]" <emorcilloATmvps.org> escribió en el
mensaje news:eh2D#
> Voy a analizar 'AddHandler', me parece que por ahi va la cosa, de
> todas maneras si tienes otra sugerencia te lo agradecería.

Si, en ese caso deberas usar AddHandler que te permite asociar un metodo


con
un evento en tiempo de ejecucion.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo


Respuesta Responder a este mensaje
#8 Fernando Balderrama
11/08/2004 - 22:06 | Informe spam
Justamente el array de controles de usuarios es el que no puedo crear, no me
funciona.
Te muestro parte del código:

Public MiArray() As BoxObjetivo

Private Sub FormMapa_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

Dim MiArray(5) As BoxObjetivo

Me.Controls.Add(MiArray(1))

End Sub

Al ejecutar obtengo el siguiente mensaje:
"Excepción no controlada del tipo 'System.NullReferenceException' en
Mapa.exe
Información adicional: Referencia a objeto no establecida como instancia de
un objeto."

Donde está la falla?



"AJPB" escribió en el mensaje
news:462e01c47fcb$eeddabd0$
Si puedes dar mas detalle de lo que intentas hacer no lo
tengo claro, pero si necesitas invocar un metodo de cada
control create un array de controles de usuarios que vas
llenando a medida que los creas, y luego recorre ese
arreglo y empieza a ejecutar los metodos.

Mi gran problema es que necesito agregar controles en


tiempo de ejecucion.
Mas precisamente, se trata de un control de usuario que


la aplicacion
utiliza en varias instancias (creadas en tiempo de


ejecucion), para las
cuales debo compartir procedimientos.
Estoy atorado en estos 3 dias!!!
Que hago?

Gracias


"AJPB" escribió en


el mensaje
news:400b01c47fba$ec2b45c0$
Luego del Handles Control.Evento agregas los demas
controles separados por coma.

. Handles Button1.Click, Button2.Click, ButtonN.Click

Según sé, VB .NET no maneja matrices de controles; pero


tiene la palabra
clave Handles que permite utilizar el mismo


procediemiento para diferentes
controles. He intentado hacerlo pero no logro resultados.
Alguien me puede ayudar?


Gracias


Fernando


.





.

Respuesta Responder a este mensaje
#9 Eduardo A. Morcillo [MS MVP VB]
11/08/2004 - 22:10 | Informe spam
Donde está la falla?



La falla es que no estas creando los controles. Esta linea "Dim MiArray(5)
As BoxObjetivo" declara el arreglo, pero cada elemento del arreglo esta sin
inicializar (= Nothing). Debes crear los objetos en cada elemento del array
antes de agregarlos:

For i As Integer = 0 to 5
MiArray(i) = New BoxObjetivo()
Me.Controls.Add(MiArray(i))
Next

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#10 Fernando Balderrama
11/08/2004 - 23:55 | Informe spam
Ahora sí, funciona!

Usé también 'AddHandler' para asignar el evento 'MouseMove' (que lo uso para
arrastrar el control con el mouse sobre el Form) con mi control de usuario,
funciona pero no igual que con una instancia del control colocado en tiempo
de diseño.
Te explico tratando de ser lo mas breve.
Al arrastrar el control con el mouse ocurre que el mouse se adelanta en
posicion respecto al control durante el arrastre, es decir, el control se
mueve pero se queda atrás. Esto no ocurre con una instancia del control
creado en tiempo de diseño.
Te muestro el código:
Dim i As Integer

For i = 1 To 5

MyControl(i) = New BoxObjetivo

Me.Controls.Add(Me.MyControl(i))

AddHandler MyControl(i).MouseMove, AddressOf OnMouseMove

Next



Private Overloads Sub OnMouseMove( ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs)

Static posAnterior As Point

If e.Button = MouseButtons.Left Then

sender.Location = New Point(sender.Left + _

sender.MousePosition.X - posAnterior.X, sender.Top + _

sender.MousePosition.Y - posAnterior.Y)

End If

posAnterior = sender.MousePosition

End Sub


Disculpa que te quite tu tiempo.
Espero tu ayuda

Gracias


Fernando

"Eduardo A. Morcillo [MS MVP VB]" <emorcilloATmvps.org> escribió en el
mensaje news:
> Donde está la falla?

La falla es que no estas creando los controles. Esta linea "Dim MiArray(5)
As BoxObjetivo" declara el arreglo, pero cada elemento del arreglo esta


sin
inicializar (= Nothing). Debes crear los objetos en cada elemento del


array
antes de agregarlos:

For i As Integer = 0 to 5
MiArray(i) = New BoxObjetivo()
Me.Controls.Add(MiArray(i))
Next

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida