Array de controles

04/04/2005 - 18:48 por manolo | Informe spam
Hola,

¿Como ppuedo crear un array de controles en .net cf e interceptar sus
eventos?

En una aplicación winforms he conseguido saber hacerlo, pero en .net cf
la propiedad name de muchos controles no existe en tiempo de ejecución.

Gracias y un saludo.

Preguntas similare

Leer las respuestas

#1 José Miguel Torres
05/04/2005 - 11:55 | Informe spam
Buenas, échale un vistazo aqui
http://groups-beta.google.com/group...ork.compac
tframework/browse_thread/thread/356df3eb96199161/a0d4cdf6b66cab5e?q=control+
arrays+name+property&rnum=1#a0d4cdf6b66cab5e

saludos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es
http://jmtorres.blogspot.com

"manolo" escribió en el mensaje
news:#
Hola,

¿Como ppuedo crear un array de controles en .net cf e interceptar sus
eventos?

En una aplicación winforms he conseguido saber hacerlo, pero en .net


cf
la propiedad name de muchos controles no existe en tiempo de ejecución.

Gracias y un saludo.


Respuesta Responder a este mensaje
#2 manolo
05/04/2005 - 13:49 | Informe spam
Hola José Miguel,

He leido el hilo y tengo un código más o menos parecido, puedo controlar
un evento hacia donde se mandan todos los eventos de click de cada botón,
pero no hay forma de saber de que botón se manda el evento.
Aquí pongo el código:

Private Sub CrearBotones(ByVal cols As Collection, ByVal Izquierda As
Integer, ByVal Arriba As Integer, Optional ByVal Ancho As Integer = 4,
Optional ByVal Alto As Integer = 4)

ReDim btnArticulos(cols.Count - 1)' as button

btnArticulos(0) = btn_0 ' botón base

For Each col As Articulos In cols

Dim I As Integer

Dim X As Integer

Dim Y As Integer

X += 1

If I > 0 Then

btnArticulos(I) = New Button

btnArticulos(I).Size = btnArticulos(0).Size

'btnArticulos(I).name = "btn_" & I.ToString

End If

If X > Ancho Then X = 1 : Y += 1

btnArticulos(I).Left = Izquierda + (X * btnArticulos(I).Width) -
btnArticulos(I).Width

btnArticulos(I).Top = Arriba + (Y * btnArticulos(I).Height) -
btnArticulos(I).Height

If I > 0 Then Me.Controls.Add(btnArticulos(I))

btnArticulos(I).Text = col.Descripcion

AddHandler btnArticulos(I).Click, AddressOf btn_0_Click

I += 1

Next

End Sub


Como verás, mando el evento click al handler del evento click del botón
btn_0_click, cuando pulso cualquier botón, entra al evento pero no consigo
saber de que botón viene.

Gracias y un saludo.

"José Miguel Torres" <jtorres_diaz~~ARROBA~~terra.es> escribió en el mensaje
news:%
Buenas, échale un vistazo aqui
http://groups-beta.google.com/group...ork.compac
tframework/browse_thread/thread/356df3eb96199161/a0d4cdf6b66cab5e?q=control+
arrays+name+property&rnum=1#a0d4cdf6b66cab5e

saludos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es
http://jmtorres.blogspot.com

"manolo" escribió en el mensaje
news:#
Hola,

¿Como ppuedo crear un array de controles en .net cf e interceptar sus
eventos?

En una aplicación winforms he conseguido saber hacerlo, pero en .net


cf
la propiedad name de muchos controles no existe en tiempo de ejecución.

Gracias y un saludo.






Respuesta Responder a este mensaje
#3 manolo
05/04/2005 - 13:57 | Informe spam
Hola de nuevo!

Acabo de averiguar como saber de que control viene el click!

Private Sub btn_0_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Handles btn_0.Click

Dim BTN As Button = sender

BTN.Text = ""

End Sub


De esta forma al menos se interactuar sobre el botón pulsado, ahora me
falta buscar alguna propiedad donde pueda guardar una identificación para el
botón, ya que no existe ni la propiedad tag ni la propiedad name.

Un saludo.

"manolo" escribió en el mensaje
news:
Hola José Miguel,

He leido el hilo y tengo un código más o menos parecido, puedo
controlar un evento hacia donde se mandan todos los eventos de click de
cada botón, pero no hay forma de saber de que botón se manda el evento.
Aquí pongo el código:

Private Sub CrearBotones(ByVal cols As Collection, ByVal Izquierda As
Integer, ByVal Arriba As Integer, Optional ByVal Ancho As Integer = 4,
Optional ByVal Alto As Integer = 4)

ReDim btnArticulos(cols.Count - 1)' as button

btnArticulos(0) = btn_0 ' botón base

For Each col As Articulos In cols

Dim I As Integer

Dim X As Integer

Dim Y As Integer

X += 1

If I > 0 Then

btnArticulos(I) = New Button

btnArticulos(I).Size = btnArticulos(0).Size

'btnArticulos(I).name = "btn_" & I.ToString

End If

If X > Ancho Then X = 1 : Y += 1

btnArticulos(I).Left = Izquierda + (X * btnArticulos(I).Width) -
btnArticulos(I).Width

btnArticulos(I).Top = Arriba + (Y * btnArticulos(I).Height) -
btnArticulos(I).Height

If I > 0 Then Me.Controls.Add(btnArticulos(I))

btnArticulos(I).Text = col.Descripcion

AddHandler btnArticulos(I).Click, AddressOf btn_0_Click

I += 1

Next

End Sub


Como verás, mando el evento click al handler del evento click del botón
btn_0_click, cuando pulso cualquier botón, entra al evento pero no consigo
saber de que botón viene.

Gracias y un saludo.

"José Miguel Torres" <jtorres_diaz~~ARROBA~~terra.es> escribió en el
mensaje news:%
Buenas, échale un vistazo aqui
http://groups-beta.google.com/group...ork.compac
tframework/browse_thread/thread/356df3eb96199161/a0d4cdf6b66cab5e?q=control+
arrays+name+property&rnum=1#a0d4cdf6b66cab5e

saludos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es
http://jmtorres.blogspot.com

"manolo" escribió en el mensaje
news:#
Hola,

¿Como ppuedo crear un array de controles en .net cf e interceptar
sus
eventos?

En una aplicación winforms he conseguido saber hacerlo, pero en .net


cf
la propiedad name de muchos controles no existe en tiempo de ejecución.

Gracias y un saludo.










Respuesta Responder a este mensaje
#4 José Miguel Torres
05/04/2005 - 15:11 | Informe spam
Buena manera! te envio otra, aunque quizás te lie. En .NET Framework se
utiliza la propiedad Tag, en .NET CF no existe así que se utilizar:
(int)MyControl.Tag por ((IList)MyControlArray).Index­Of(MyControl),

pero si como lo has echo funciona, excelente!

saludos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es
http://jmtorres.blogspot.com


"manolo" escribió en el mensaje
news:#
Hola de nuevo!

Acabo de averiguar como saber de que control viene el click!

Private Sub btn_0_Click(ByVal sender As Object, ByVal e As


System.EventArgs)
Handles btn_0.Click

Dim BTN As Button = sender

BTN.Text = ""

End Sub


De esta forma al menos se interactuar sobre el botón pulsado, ahora me
falta buscar alguna propiedad donde pueda guardar una identificación para


el
botón, ya que no existe ni la propiedad tag ni la propiedad name.

Un saludo.

"manolo" escribió en el mensaje
news:
> Hola José Miguel,
>
> He leido el hilo y tengo un código más o menos parecido, puedo
> controlar un evento hacia donde se mandan todos los eventos de click de
> cada botón, pero no hay forma de saber de que botón se manda el evento.
> Aquí pongo el código:
>
> Private Sub CrearBotones(ByVal cols As Collection, ByVal Izquierda As
> Integer, ByVal Arriba As Integer, Optional ByVal Ancho As Integer = 4,
> Optional ByVal Alto As Integer = 4)
>
> ReDim btnArticulos(cols.Count - 1)' as button
>
> btnArticulos(0) = btn_0 ' botón base
>
> For Each col As Articulos In cols
>
> Dim I As Integer
>
> Dim X As Integer
>
> Dim Y As Integer
>
> X += 1
>
> If I > 0 Then
>
> btnArticulos(I) = New Button
>
> btnArticulos(I).Size = btnArticulos(0).Size
>
> 'btnArticulos(I).name = "btn_" & I.ToString
>
> End If
>
> If X > Ancho Then X = 1 : Y += 1
>
> btnArticulos(I).Left = Izquierda + (X * btnArticulos(I).Width) -
> btnArticulos(I).Width
>
> btnArticulos(I).Top = Arriba + (Y * btnArticulos(I).Height) -
> btnArticulos(I).Height
>
> If I > 0 Then Me.Controls.Add(btnArticulos(I))
>
> btnArticulos(I).Text = col.Descripcion
>
> AddHandler btnArticulos(I).Click, AddressOf btn_0_Click
>
> I += 1
>
> Next
>
> End Sub
>
>
> Como verás, mando el evento click al handler del evento click del


botón
> btn_0_click, cuando pulso cualquier botón, entra al evento pero no


consigo
> saber de que botón viene.
>
> Gracias y un saludo.
>
> "José Miguel Torres" <jtorres_diaz~~ARROBA~~terra.es> escribió en el
> mensaje news:%
>> Buenas, échale un vistazo aqui
>>


http://groups-beta.google.com/group...ork.compac
>>


tframework/browse_thread/thread/356df3eb96199161/a0d4cdf6b66cab5e?q=control+
>> arrays+name+property&rnum=1#a0d4cdf6b66cab5e
>>
>> saludos
>>
>>
>> José Miguel Torres
>> jtorres_diaz~~ARROBA~~terra.es
>> http://jmtorres.blogspot.com
>>
>> "manolo" escribió en el mensaje
>> news:#
>>> Hola,
>>>
>>> ¿Como ppuedo crear un array de controles en .net cf e interceptar
>>> sus
>>> eventos?
>>>
>>> En una aplicación winforms he conseguido saber hacerlo, pero en


.net
>> cf
>>> la propiedad name de muchos controles no existe en tiempo de


ejecución.
>>>
>>> Gracias y un saludo.
>>>
>>>
>>
>>
>
>


Respuesta Responder a este mensaje
#5 José Miguel Torres
05/04/2005 - 15:36 | Informe spam
No, no, la propiedad tag está presente en .NET Framework no en .NET COmpact
Framework, creo que te he liado, tu solución es muy válida, sólo que te he
adjuntado lo de la propiedad tag por si te habías encontrado con ese
problema. nada más, saludos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es
http://jmtorres.blogspot.com

"manolo" escribió en el mensaje
news:
Hola Miguel,

No entiendo esa forma de hacerlo que me has dicho. ¿Podría añadirle


una
propiedad tag yo a mano? Es decir, al declarar dim btnArticulos() as


button,
adjuntarle una propiedad tag a cada elemento.
Y si se pudiese, ¿al hacer dim btn as button = sender, ¿se pasaría esa
propiedad?

O mejor aún... ¿podría hacer un control personalizado haciendo inerits
system.windows.winforms.button y añadiéndole
una propiedad más?

Gracias y un saludo!

"José Miguel Torres" <jtorres_diaz~~ARROBA~~terra.es> escribió en el


mensaje
news:
> Buena manera! te envio otra, aunque quizás te lie. En .NET Framework se
> utiliza la propiedad Tag, en .NET CF no existe así que se utilizar:
> (int)MyControl.Tag por ((IList)MyControlArray).Index­Of(MyControl),
>
> pero si como lo has echo funciona, excelente!
>
> saludos
>
>
> José Miguel Torres
> jtorres_diaz~~ARROBA~~terra.es
> http://jmtorres.blogspot.com
>
>
> "manolo" escribió en el mensaje
> news:#
>> Hola de nuevo!
>>
>> Acabo de averiguar como saber de que control viene el click!
>>
>> Private Sub btn_0_Click(ByVal sender As Object, ByVal e As
> System.EventArgs)
>> Handles btn_0.Click
>>
>> Dim BTN As Button = sender
>>
>> BTN.Text = ""
>>
>> End Sub
>>
>>
>> De esta forma al menos se interactuar sobre el botón pulsado, ahora
>> me
>> falta buscar alguna propiedad donde pueda guardar una identificación


para
> el
>> botón, ya que no existe ni la propiedad tag ni la propiedad name.
>>
>> Un saludo.
>>
>> "manolo" escribió en el mensaje
>> news:
>> > Hola José Miguel,
>> >
>> > He leido el hilo y tengo un código más o menos parecido, puedo
>> > controlar un evento hacia donde se mandan todos los eventos de click


de
>> > cada botón, pero no hay forma de saber de que botón se manda el


evento.
>> > Aquí pongo el código:
>> >
>> > Private Sub CrearBotones(ByVal cols As Collection, ByVal Izquierda As
>> > Integer, ByVal Arriba As Integer, Optional ByVal Ancho As Integer 4,
>> > Optional ByVal Alto As Integer = 4)
>> >
>> > ReDim btnArticulos(cols.Count - 1)' as button
>> >
>> > btnArticulos(0) = btn_0 ' botón base
>> >
>> > For Each col As Articulos In cols
>> >
>> > Dim I As Integer
>> >
>> > Dim X As Integer
>> >
>> > Dim Y As Integer
>> >
>> > X += 1
>> >
>> > If I > 0 Then
>> >
>> > btnArticulos(I) = New Button
>> >
>> > btnArticulos(I).Size = btnArticulos(0).Size
>> >
>> > 'btnArticulos(I).name = "btn_" & I.ToString
>> >
>> > End If
>> >
>> > If X > Ancho Then X = 1 : Y += 1
>> >
>> > btnArticulos(I).Left = Izquierda + (X * btnArticulos(I).Width) -
>> > btnArticulos(I).Width
>> >
>> > btnArticulos(I).Top = Arriba + (Y * btnArticulos(I).Height) -
>> > btnArticulos(I).Height
>> >
>> > If I > 0 Then Me.Controls.Add(btnArticulos(I))
>> >
>> > btnArticulos(I).Text = col.Descripcion
>> >
>> > AddHandler btnArticulos(I).Click, AddressOf btn_0_Click
>> >
>> > I += 1
>> >
>> > Next
>> >
>> > End Sub
>> >
>> >
>> > Como verás, mando el evento click al handler del evento click del
> botón
>> > btn_0_click, cuando pulso cualquier botón, entra al evento pero no
> consigo
>> > saber de que botón viene.
>> >
>> > Gracias y un saludo.
>> >
>> > "José Miguel Torres" <jtorres_diaz~~ARROBA~~terra.es> escribió en el
>> > mensaje news:%
>> >> Buenas, échale un vistazo aqui
>> >>
>


http://groups-beta.google.com/group...ork.compac
>> >>
>


tframework/browse_thread/thread/356df3eb96199161/a0d4cdf6b66cab5e?q=control+
>> >> arrays+name+property&rnum=1#a0d4cdf6b66cab5e
>> >>
>> >> saludos
>> >>
>> >>
>> >> José Miguel Torres
>> >> jtorres_diaz~~ARROBA~~terra.es
>> >> http://jmtorres.blogspot.com
>> >>
>> >> "manolo" escribió en el mensaje
>> >> news:#
>> >>> Hola,
>> >>>
>> >>> ¿Como ppuedo crear un array de controles en .net cf e


interceptar
>> >>> sus
>> >>> eventos?
>> >>>
>> >>> En una aplicación winforms he conseguido saber hacerlo, pero en
> .net
>> >> cf
>> >>> la propiedad name de muchos controles no existe en tiempo de
> ejecución.
>> >>>
>> >>> Gracias y un saludo.
>> >>>
>> >>>
>> >>
>> >>
>> >
>> >
>>
>>
>
>


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