Copiare gestori di eventi tra Control

venerdì 28 luglio 2006 - 18.25

massimobonanni Profilo | Newbie

Ho la necessità di copiare i gestori di avengi agganciati su di un Control su di un altro.
Ho visto l'esistenza della collection Events (in sola lettura) che permette di accedere ai delegate degli eventi a partire dalla Key.
Purtroppo non ho trovato nessun modo per ottenere l'elenco delle keys?
Se recupero la signature degli eventi utilizzando la reflection, posso utilizzare il nome degli eventi come key?
In quel caso se utilizzo il metodo AddHandler della collection Events del destinatario per attaccare ciò che ho ottenuto dall'item della collection evetnts del sorgente, riesco a fare ciò che voglio?
Grazie per qualsiasi suggerimento.

Massimo

freeteo Profilo | Guru

ciao,
se hai bisogno di usare 1solo gesteore per gli stessi eventi di diversi controlli allora puoi usare questa forma:

-----------
c#
-----------
....
mioBtn1.Click += new EventHandler(mioBtn1_Click);
mioBtn2.Click += new EventHandler(mioBtn1_Click);
mioBtn3.Click += new EventHandler(mioBtn1_Click);
mioBtn4.Click += new EventHandler(mioBtn1_Click);
}

void mioBtn1_Click(object sender, EventArgs e)
{
....


-----------
vb.net
-----------
...
AddHandler mioBtn1.Click, AddressOf Me.mioBtn1_Click
AddHandler mioBtn2.Click, AddressOf Me.mioBtn1_Click
AddHandler mioBtn3.Click, AddressOf Me.mioBtn1_Click
AddHandler mioBtn4.Click, AddressOf Me.mioBtn1_Click

Private Sub mioBtn1_Click(ByVal sender As Object, ByVal e As EventArgs)

...

dove "mioBtnx" è 1 bottone, basta che lo fai per gli eventi che vuoi tu...
ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

massimobonanni Profilo | Newbie

Il problema è più generico: io ho un oggetto di cui non so a priori quali siano gli eventi (nè come si chiamao, ne quali hanno un gestore attaccato) e devo costruirne un'altro identico con gli tessi eventi.
Quindi non posso utilizzare la tecnica da te proposta in quanto non so se Click (ad esempio) è un evento previsto dall'oggetto.

massimobonanni Profilo | Newbie

Infatti: sto procedendo in questo modo:

1) recupero gli eventi tramite GetEvents() di Type:
Dim sourceEvents As EventInfo() = oSource.GetType.GetEvents()
2) ciclo all'interno di ogni EventInfo
For Each [event] As EventInfo In sourceEvents
3) dovrei recuperare il delegate relativo all'evento eventualmente agganciato all'oggetto (ma ancora non ho trovato il modo)
dim eventDelegate As [Delegate] = ' qui dovrei recuperare il delegate dell'evento
4) se ottengo il delegate lo aggancio all'oggetto di destinazione
If Not eventDelegate Is Nothing Then
[event].AddEventHandler(oTarget, eventDelegate)

Se solo riuscissi a ricavare il delegate forse funzionerebbe.
Nessuno ha idee??

Massimo

BenHur73 Profilo | Newbie

Ciao,

ho un problema simile al tuo, avevi trovato una soluzione?

massimobonanni Profilo | Newbie

No, purtroppo ancora no!
Il primo che la trova lo comunica!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5