Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
Associare eventi a metodi
martedì 18 novembre 2003 - 16.19
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Sandro
Profilo
| Newbie
9
messaggi | Data Invio:
mar 18 nov 2003 - 16:19
Salve,
ho creato un custom control che contiene a sua volta dei controlli (per adesso due bottoni). Ho quindi inserito il custom control in una pagina aspx. Il mio problema è associare ad un evento del custom control (il click su uno dei bottoni), un metodo della pagina aspx in cui ho inserito il custom control.
Grazie per l'attenzione
Sandro
Sandro
Profilo
| Newbie
9
messaggi | Data Invio:
mar 18 nov 2003 - 17:11
Non mi permette di accedere al "button1" di
<Addhandler user_control.button1.click,addressof tuometodo>
Riesco ad accedere alle proprietà di button1 ma non riesco ad associargli un metodo.
grazie per la risposta
Sandro
Sandro
Profilo
| Newbie
9
messaggi | Data Invio:
mar 18 nov 2003 - 17:24
Contrordine,
funziona !!!
GRAZIE
luca76-rm
Profilo
| Newbie
19
messaggi | Data Invio:
mer 26 nov 2003 - 14:09
se posso permettermi, vorrei suggerirti un metodo più elegante per risolvere il tuo problema.
Ammettiamo di avere il controllo utente riportato di seguito:
Public MustInherit Class userContro1
Inherits System.Web.UI.UserControl
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents Button2 As System.Web.UI.WebControls.Button
#Region " Codice generato da Progettazione Web Form "
'Chiamata richiesta da Progettazione Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
'Non modificarla nell'editor del codice.
InitializeComponent()
End Sub
#End Region
#Region "Eventi_Pubblici"
Public Event Button_Click(ByVal btn As Button)
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Inserire qui il codice utente necessario per inizializzare la pagina
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
RaiseEvent Button_Click(Button1)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
RaiseEvent Button_Click(Button2)
End Sub
End Class
piuttosto che rendere i due pulsanti pubblici, crei un evento pubblico che accetta n argomenti.
in questo caso ho creato un evento chiamato "Button_Click"
che accetta un solo parametro di tipo Button.
--Public Event Button_Click(ByVal btn As Button)--
Nota: tutti gli eventi del framework accettano due parametri.
es. Page_Load(sender as object, e as eventargs)
Non è necessario creare eventi in questo modo, ma sarebbe una soluzione più pulita soprattutto se il codice non lo devi leggere e manutenere solo tu.
Nell'evento click dei due pulsanti Button1 e Button2 sollevi l'evento con la parola chiave raisevent e gli passi il tipo di evento da riverberare e i parametri necessari.
--RaiseEvent Button_Click(Button2)--
Questo è il codice necessario nella pagina .ascx
Per quanto riguarda la pagina .aspx che deve ospitare il controllo, devi inserire il seguente codice:
Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents UC1 As userContro1
#Region " Codice generato da Progettazione Web Form "
'Chiamata richiesta da Progettazione Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
'Non modificarla nell'editor del codice.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Inserire qui il codice utente necessario per inizializzare la pagina
End Sub
Private Sub UC1_Button_Click(ByVal btn As System.Web.UI.WebControls.Button) Handles UC1.Button_Click
Response.Write("Hai premuto il pulsante: " & btn.Text)
End Sub
End Class
Innanzitutto va dichiarata la variabile che punta al controllo utente da te creato
--Protected WithEvents UC1 As userContro1--
automaticamente nella combo di sinistra della finestra di progettazione ti viene aggiunto un nuovo oggetto chiamato UC1.
Se lo selezioni, vedrai nella combo di destra (dove sono elencati tutti gli eventi dell'oggetto in questione) apparire anche l'evento Button_Click.
Lo selezioni e visual studio ti crea la routine relativa a quell'evento
--Private Sub UC1_Button_Cli
Sandro
Profilo
| Newbie
9
messaggi | Data Invio:
mer 26 nov 2003 - 17:40
Ti ringrazio del suggerimento.
Ho provato, ma non mi aggancia l'evento. Quando dici che dichiarando la variabile che punta al controllo, nella combo di sinistra della finestra di progettazione viene aggiunto un nuovo oggetto, intendi che dovrei vedere il controllo nella toolbox, insieme agli altri controlli ?
grazie
Sandro
luca76-rm
Profilo
| Newbie
19
messaggi | Data Invio:
mer 26 nov 2003 - 18:04
ti sto mandando un esempio per email. Se hai un particolare problema, puoi anche mandarmi il codice e vedo cosa posso fare. Ciao
Sandro
Profilo
| Newbie
9
messaggi | Data Invio:
gio 27 nov 2003 - 08:55
Ora funziona: grazie.
E' possibile controllare le proprietà dello user control dal pannello delle proprietà ? In caso affermativo, come ?
Oppure è necessario impostarle dalla pagina aspx che la richiama ?
grazie
Sandro
luca76-rm
Profilo
| Newbie
19
messaggi | Data Invio:
gio 27 nov 2003 - 13:55
x Sandro: modificare le proprietà di un controllo utente in fase di design time non è possibile con l'attuale visual studio. Ho parlato con un evangelist della microsoft (con cui collaboro) e mi ha spiegato che questi piccoli problemi dovrebbero risolversi con le versioni future di visual studio.
x Coach: la gestione degli eventi con AddHandler è molto più flessibile della gestione standard che utilizza la parola chiave Handles, ma è consigliabile soprattutto per esigenze diverse dal problema di Sandro. Per esempio quando si devono associare diversi controlli ad una routine unica. Siccome però il tutto è gestito a runtime, i meno esperti potrebbero avere qualche difficoltà nel ricercare gli errori nel codice. Cmq non ho detto che la soluzione proposta da me è migliore delle altre. E' semplicemente un'alternativa.
Ciao
luca76-rm
Profilo
| Newbie
19
messaggi | Data Invio:
gio 27 nov 2003 - 16:23
Coach, sono d'accordo con te. Infatti mi piace confrontare la mia esperienza con quella degli altri. Nel posto dove lavoro c'è tanta di quella incompetenza che non vale nemmeno la pena confrontarsi. Una domanda OT: qualcuno di voi ha provato VS.NET 2003? Io ho il dvd che mi hanno dato alla microsoft ma sfortunatamente non si installa.
Sandro
Profilo
| Newbie
9
messaggi | Data Invio:
ven 28 nov 2003 - 08:54
Utilizzo VS.NET 2003 ma non ho notato particolari differenti con la versione precedente.
Sandro
Torna su
Stanze Forum
Elenco Threads
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 !