HANDLER EVENTI CREATI DINAMICAMENTE

mercoledì 01 luglio 2009 - 10.37

Giuseppe.Schiappapie Profilo | Newbie

Ciao a tutti,
Non so se ho utilizzato il TiTOLO giusto ma sono nuovo del .NET e vorrei risolvere un problemino.
Ho creato un applicativo con una serie di Menu. Vorrei creare una Toolbar che rispecchi esattamente i menu in modo tale che aggiungendo o rimuovendo dei menu, o modificandone le immagine etc etc la toolbar venga automaticamente ricreata.

Tutto cio sono riusci a farlo tramite questo codice

For I As Integer = 0 To MenuStrip.Items.Count - 1 Dim SottoMenu As ToolStripMenuItem SottoMenu = MenuStrip.Items(I) For Each SMenu As Object In SottoMenu.DropDownItems If TypeOf (SMenu) Is ToolStripSeparator Then Else Dim A As New ToolStripButton A.Image = SMenu.Image A.Enabled = SMenu.enabled A.ToolTipText = SMenu.text ToolStrip1.Items.Add(A) End If Next Next

quello che non riesco a fare ora è inserirgli lo stesso evento del menu.
Qualcuno saprebbe indirizzarmi?

grazie mille a tutti

Jeremy Profilo | Guru

Ciao Giuseppe.

Se ho capito bene la domanda ...
Dim A As New ToolStripButton A.Image = SMenu.Image A.Enabled = SMenu.enabled A.ToolTipText = SMenu.text addhandler A.click, addressof TuttiGliItem_Click ToolStrip1.Items.Add(A)

Ad ogni modo .... facci sapere....
Ciao

Giuseppe.Schiappapie Profilo | Newbie

Ciao,
Innanzitutto ti ringrazio per la risposta .
in effetti avevo gia provato cosi ma cosa intendi per tuttiglititem_click?

ogni "Smenu" ha un suo evento per esempio

ho il menu strumenti che ha come sottomennu

Autisti
Mezzi
etc

ogni sottomenu ha il suo evento di gestione

quando creo dinamicamente la toolbar iterando il menu avrei la necessità di assegnargli l'evento del menu che in quel momento sto iterando nel ciclo for each

For Each SMenu As Object In SottoMenu.DropDownItems If TypeOf (SMenu) Is ToolStripSeparator Then Else Dim A As New ToolStripButton A.Image = SMenu.Image A.Enabled = SMenu.enabled A.ToolTipText = SMenu.text ToolStrip1.Items.Add(A) End If Next
infatti come vedi recupero e assegno l'immagine
poi lo stato di attivazione
gli do un tooltip con il testo del menu

quello che non riesco a fare ora è

Supponiamo che Smenu.text equivalga al Menu "Autisti"
come faccio a dargli l'equivalente Autisti_Click ?

ciao e ti ringrazio nuovamente

Jeremy Profilo | Guru

>Ciao,
Ciao
>Innanzitutto ti ringrazio per la risposta .
Prego
>in effetti avevo gia provato cosi ma cosa intendi per tuttiglititem_click?
Intendo una Routine che gestisce l'evento Click di tutti gli Item per il quale hai deciso di creare dei gestori evento a Run-time
>
>ogni "Smenu" ha un suo evento per esempio
Si .... ma il delegato che gestisce l'evento ha sempre, nella firma, un oggetto (sender) di tipo object che identifica chi ha scatenato l'evento.

>
>ho il menu strumenti che ha come sottomennu
>
>Autisti
>Mezzi
>etc
>
>ogni sottomenu ha il suo evento di gestione
Si ... ma tu questa cosa devi modificarla in modo da far puntare tutti gli eventi Click ad un unica Routine

>Supponiamo che Smenu.text equivalga al Menu "Autisti"
>come faccio a dargli l'equivalente Autisti_Click ?
Come ti ho indicato nel post precedente
>
>ciao e ti ringrazio nuovamente
So che con queste ulteriori indicazioni non abbiamo concluso niente .... ma tu prova lo stesso a vedere se sono riuscito a darti un'idea un pò più chiara ... eventualmente ....siamo qua.

Facci sapere...
Ciao

Giuseppe.Schiappapie Profilo | Newbie

ciao ,
si in effetti sapevo che avredi dovuto creare un unica routine che gestiva il click di tutti gli item.
siccome per il programma l'ho termina e volevo aggiungere una toolbar evitando di modificare quanto fatto , speravo esistesse una soluzione.

tu intendevi una routine nella quale ad esempio

Sub ClickTuttiItem(ByVal sender As Object)
'' COn un select case gestivo i vari meni ad esempio
select case sender.text
case "Autisti
' gestione menu autisti
case "Mezzi
etc etc

end select

End Sub

poi aggiungevo addhandler smenu.click,addressof ClickTuttiItem

giusto?

grazie mille

Jeremy Profilo | Guru

>giusto?
Si .... in un modo un pò più pulito ma, concettualmente, è giusto.
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