Jump to content
CreativeJopa

Adicionar Handler a UserControl

Recommended Posts

CreativeJopa

Boas,

Na minha aplicação tenho um usercontrol com uma "image" e várias "label".

Esse usercontrol é adicionado dinamicamente (com o programa a correr), e preciso que ao carregar na imagem do usercontrol, me seja devolvido um valor de uma variavel desse mesmo usercontrol.

Então, adiciono o código:

Dim new_UserControl as new UserControl_anotacoes
AddHandler new_UserControl.MouseLeftButtonDown, AddressOf executa_MouseLeftButtonDown

E o evento:

Private Sub executa_MouseLeftButtonDown(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim new_UserControl As UserControl_anotacoes = CType(sender, UserControl_anotacoes)
        MsgBox(new_UserControl.ID)
End Sub

Ora bem, isto funciona. Quando clico no usercontrol, é-me devolvido o valor da variável ID. A questão é que isso aconteça só quando clico na "image" e não no usercontrol inteiro.

Se fizer assim:

Dim new_UserControl as new UserControl_anotacoes
AddHandler new_UserControl.Image_1.MouseLeftButtonDown, AddressOf executa_MouseLeftButtonDown

Recebo o erro:

Unable to cast object of type 'System.Windows.Controls.Image' to type 'My_app.UserControl_anotacoes'.

Alguém pode ajudar?

Share this post


Link to post
Share on other sites
ribeiro55

Deverias implementar o teu próprio evento, a ser disparado por o que tivesse que ser disparado no usercontrol para garantires que só tinhas de adicionar um handler e que este transportava todos os valores que precisas (ou o objecto inteiro).

Se fizeres como indicas, no handler "executa_MouseLeftButton", o sender passa a ser a Image, e o CType tem de rebentar.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
ribeiro55

Implementa o teu próprio evento.

Por exemplo, 

Public Event FuiClicado(quem As UserControl_anotacoes)

Depois, nos clicks do usercontro que queres que sejam gatilhos do click, basta colocar:

RaiseEvent FuiClicado(Me)

Depois, onde adicionas os handlers (provavelmente no form?) acrescentas um handler para FuiClicado, por exemplo:

Dim new_UserControl as new UserControl_anotacoes
AddHandler new_UserControl.FuiClicado, AddressOf executa_FuiClicado

Private Sub executa_FuiClicado(ByVal QuemFoiClicado As UserControl_anotacoes)
       MsgBox(QuemFoiClicado.ID)
End Sub


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.