Intercettare evento da una classe comune a più forms

giovedì 04 ottobre 2012 - 21.44
Tag Elenco Tags  VB.NET  |  .NET 4.0

massimo1965 Profilo | Junior Member

Ciao a Tutti,
scusate l'ignoranza, magari l'approccio è errato, ma non riesco a venirne fuori.
Mi spiego :
ho creato una classe che genera un particolare evento.
questa classe l'ho messa in un Module come Public in quanto deve essere visibile da più form
il problema è che quando cerco di agganciare l'evento della classe ad una sub presente in una forma ho questo errore :
La clausola Handles richiede una variabile WithEvents definita nel tipo che la contiene o in uno dei suoi tipi di base.
Se dichiaro la classe ovviamente all'interno della form1 mi funziona, ma poi non mi risulta visibile dalla form2

Qualche idea ?
Grazie

Public Class Form1 Public Sub Evento(ByVal s As String, ByVal n As String) Handles _Class1.Generalita End Sub End Class Public Class Class1 Public Nome As String Public Cognome As String Public Event Generalita(ByVal Nome As String, ByVal Cognome As String) Public Sub New(Nome, Cognome) End Sub Public Sub Init() RaiseEvent Generalita(Nome, Cognome) End Sub End Class Module Module1 Public WithEvents _Class1 As Class1 End Module

bludev Profilo | Newbie

Non mi risulta che nella sintassi di Handles ci si possa riferire a oggetti esterni al form. Puoi però aggirare la limitazione dichiarando una variabile privata e "withevents" dello stesso tipo nel form e copiare il riferimento di quella dichiarata nel modulo. Il seguente esempio forse spiega meglio quello che intendo:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Appena faccio click su Button1 viene cambiata la proprietà Nome. Questa genera un evento "Changed" che viene catturata da Form1 (ma potrebbe essere un qualunque altro form).
---
Fabio Turrin - Bludev - http://www.bludev.it/

massimo1965 Profilo | Junior Member

Grazie,
pensavo anch'io ad usa soluzione del genere, ma non ne ero sicuro che fosse l'unico...
Grazie comunque

Ciao
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5