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
App. WinForms / WPF .NET
Intercettare il click di un bottone
martedì 03 aprile 2007 - 21.05
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
seven.7
Profilo
| Junior Member
127
messaggi | Data Invio:
mar 3 apr 2007 - 21:05
Salve volevo sapere in metodo per intercettare un click e restituire il valore del TAG. In pratica ho una funzione per molti bottoni che è sempre uguale ma varia il risultato a seconda del TAG. Mi aiutate????
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
mar 3 apr 2007 - 21:56
Se i bottoni sono, come penso, inseriti in fase di progettazione e non a Run Time da codice, una delle cose più semplici da fare è di chiamare la solita procedura da ciascuno dei gestori di evento dei bottoni. Potresti anche usare un solo gestore di evento per tutti i ckick dei vari bottoni, ma qualche volta il numero di righe della dichiarazione della procedura, se i bottoni sono molti, rischia di diventare anti estetico.
Comunque, la procedura che dovresti chiamare, dovrebbe accettare come parametro il 'sender' dell'evento click, che sarà un button, ricavarne il tag e procedere di conseguenza, per esempio con un 'select case'.
In prima battuta questa è l'indicazione che mi sento di darti. Resto a disposizione per eventuali chiarimenti necessari.
seven.7
Profilo
| Junior Member
127
messaggi | Data Invio:
mer 4 apr 2007 - 07:06
Private Sub Button_1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_1.Click
Dim i As Integer = CType(Me.Button_1.Tag.ToString, Integer)
Me.MostraInfoAdd(i)
End Sub
poichè sono molti bottoni mi servirebbe qualcosa per eliminare il me.button_1.tag... e rendere l'evento universale diciamo... mi potresti aiutare a fare in modo che tale valore venga preso dal nome della funzione stessa (da handles button_1.click). In questo modo con il semplice copia incolla definisco tutti gli eventi click dei bottoni...thanks
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
mer 4 apr 2007 - 08:10
Basta scrivere sender al posto di button1,button2, ecc...
Esempio:
Dim i As Integer = Convert.toint32(ctype(sender,button).Tag)
Me.MostraInfoAdd(i)
End Sub
Devi solo operare il casting del generico oggetto 'sender' in 'button', utilizzando ctype e poi puoi richiamarne il TAG. Il sender dell'evento, in effetti, altri non è che il pulsante su cui è stato cliccato. Ci sarebbe anche la possibilità di utilizzare la stessa procedura per gestire gli eventi provenienti da pulsanti diversi, che comunque verrebbero riconosciuti in quanto ogni volta si tratterebbe di un 'sender' differente. Per farlo, basterebbe aggiungere altri pulsanti in coda alla clausola handles. Il problema, come accennavo è se i pulsanti sono una decina o più e allora diventa veramente bruttino a vedersi, ma però si può fare. Io, fossi in te, scriverei qualcosa del genere:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click
Dim Risultato As Integer
If Not IsNothing(CType(sender, Button).Tag) Then
Integer.TryParse(CType(sender, Button).Tag.ToString, Risultato)
End If
ovviamente, dopo il 'Handles Button1.Click, Button2.Click', puoi continuare con button3,button4, ecc....
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 !