6 messaggi dal 12 ottobre 2010
Cosa sbaglio ?
Ho scritto questo codice per associare ciclicamente un controllo button :

Nella pagina aspx ho 3 Button con ID Button1,Button2 e Button3.
Nel codebehind:
---------------------------------------------------------------------
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim btn As Button

Dim contr As String
For i As Integer = 1 To 3
contr = "Button" & i.ToString
btn = CType(Me.Controls(contr), Button)

AddHandler btn.Click, AddressOf CliccaImg
Next
End Sub

Protected Sub CliccaImg()
MsgBox("Tutto ok")
End Sub
---------------------------------------------------------------------
ma alla riga:
btn = CType(Me.Controls(contr), Button)
mi restituisce un errore:
Cast non valido dalla stringa "Button1" al tipo 'Integer'.

come mai? qual è l'errore
Grazie
93 messaggi dal 25 maggio 2005
perché "Controls" è una collection di controlli, e ci puoi accedere solo tramite indice.:
Me.Controls(1)


quindi per fare quello che vuoi fare, puoi usare ad esempio LinQ
        For Each btn As Button In Me.Controls().OfType(Of Button)()
            AddHandler btn.Click, AddressOf CliccaImg
        Next

Inviato dall'app per Windows 8
6 messaggi dal 12 ottobre 2010
Grazie per la risposta, ma in effetti non credo sia quello che volevo, in realtà il codice che ti ho scritto è fuorviante...

Io vorrei creare una matrice di controlli dinamica, lavorando in passato in VB6 era una cosa che utilizzavo molto.

Per creare una matrice di controllo in VB.net basta aggiungere alla Handles i riferimenti ai controlli da utilizzare
es.:
ho 3 button con ID Button1, Button2 e Button3
nel codice inserisco una routine es.
---------------------------
Protected Sub btnButton_Click(sender As Object, e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
Dim btn As Button = CType(sender, Button)
btn.Text = btn.ClientID
End Sub
---------------------------
che alla pressione del tasto modifica il testo del Button.
Ma così ho la necessità di inserire manualmente il riferimento alla Handles, quindi il tutto è statico.
Se volessi renderlo dinamico (nel modo più semplice possibile), creando a codice nuovi Button con prefisso ID "Button" (es.: Button4, Button5 ecc.) e fare in modo di associarli alla sub btnButton_Click, come dovrei fare ?

Grazie

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.