Scatenare eventi

venerdì 16 gennaio 2009 - 16.42

Teech Profilo | Expert

Quello che vorrei fare mi pare abbastanza facile, ma non ci riesco
Praticamente, se una TextBox contiene un determinato valore vorrei scatenare l'evento Click di un Button.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Grazie!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

aiedail92 Profilo | Expert

Ciao

Generalmente una cosa del genere (cioè scatenare direttamente gli eventi di un oggetto non dall'oggetto stesso) non si può fare. Pertanto bisogna usare delle funzioni che causino il sollevamento dell'evento, e per il Click c'è proprio il metodo PerformClick, ereditato dall'interfaccia IButtonControl, che ti basta chiamare per simulare la pressione del tasto:

tuoButton.PerformClick()

Luca

Jeremy Profilo | Guru

Scusate ragazzi....come non si può fare????Forse non ho capito il problema, altrimenti basta fare


if textbox.text= valore che voglio then
clickbottone
endif

private sub clickbottone(senza firma) handles bottone.click
'codice che ti serve
end sub

questo è solo un modo ....se serve puoi usare anche addhandler.


Fammi sapere
Ciao.

aiedail92 Profilo | Expert

Quello che hai scritto tu in realtà non genera l'evento, semplicemente chiama la stessa funzione a cui l'evento è associato.

Prova a scrivere

TuoButton.Click(sender, e)

Oppure

RaiseEvent TuoButton.Click(sender, e)

E vedi che non puoi generare un evento se non dalla classe stessa che lo definisce.

Luca

Jeremy Profilo | Guru

>Quello che hai scritto tu in realtà non genera l'evento, semplicemente
>chiama la stessa funzione a cui l'evento è associato.

In realtà....non è proprio così....se uso AddHandler
Ripeto...forse non ho afferrato il problema.


public event NuovoClick

AddHandler MioBottone.click, address of NuovoEvento

private sub NuovoEvento
Raiseevent NuovoClick
End Sub

private evento_nuovoclick(byval sender as object,byval e as eventargs) handles me.nuovoclick
il codice che vuoi
end sub

aiedail92 Profilo | Expert

Ma questo non risolve il problema di Maurizio, che, se ho capito bene, era di forzare (o comunque simulare) la pressione del bottone.

Invece col codice che hai scritto te, l'unica cosa che si ottiene è solo di generare un nuovo evento (NuovoClick) quando il pulsante viene premuto (TuoButton.Click)...

Comunque un evento non può essere scatenato da codice che sia esterno alla classe che lo definisce, perchè in effetti è ovvio che l'evento è qualcosa di proprio della classe, e non si vuole che la prima persona possa sconvolgere il "succedersi degli eventi"

Luca

Jeremy Profilo | Guru

Ripeto....forse non ho afferrato il problema....però ciò che dici tu è vero solo in parte.....
>Invece col codice che hai scritto te, l'unica cosa che si ottiene
>è solo di generare un nuovo evento (NuovoClick) quando il pulsante
>viene premuto (TuoButton.Click)...

tento di spiegarmi meglio:
E' vero che non faccio altro che creare un nuovo evento (nuovoclick)...ma è anche vero che button.click viene 'indirizzato' alla routine eventonuovoclick che, a sua volta, scatenza il nuovo evento (nuovoclick).

Se all'interno della routine eventonuovoclick, scrivi il codice che avresti scritto in button.click......quando tu scateni l'evento "nuovoevento" è come se scatenassi l'evento button.click.

L'evento button.click se non gestisce del codice....che senso ha che venga scatenato....
E se, invece, gestisce del codice ......perchè non usare la possibilità di creare un handle a runtime.

Ripeto...se non ho afferrato il problema....mi fermo qui.(non insisto per non intasare il forum con dei post inutili.)

Ciao

Teech Profilo | Expert

La situazione è la seguente:
Ho un forma dove l'utente può interagire solo attraverso un lettore di codici a barre. In questo form ho dei textbox e dei button (per puro aspetto grafico). Per permettere la pressione dei button ho impostato delle stringhe "speciali" che se indicate nei textbox devrebbero scatenare l'evento click del del button associato alla stringa "speciale": questo accrocchio l'ho utilizzato in quanto non volevo implementare un hook di tastiera perchè non conosco praticamente nulla sulle API di Windows e non potevo investire troppo tempo nella realizzazione del progetto.
La soluzione del PerformClick l'ho implementata abbastanza semplicemente e mi permette di mantenere la sequenzialità degli eventi standard, quindi ritengo che per la mia situazione sia la più corretta (salvo successive smentite).

Grazie mille dei consigli!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
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