antometal (Member)
Guru
Messaggi: 691
Iscritto: 12/09/2007
|
e se volessi sapere quanti controlli ho creato?
|
|
ruggy94 (Member)
Guru
Messaggi: 890
Iscritto: 21/04/2008
|
Postato originariamente da antometal:
grazie ancora |
Figurati |
|
ruggy94 (Member)
Guru
Messaggi: 890
Iscritto: 21/04/2008
|
Postato originariamente da antometal:
e se volessi sapere quanti controlli ho creato? |
Sei tu a deciderlo...nel ciclo for, no?
For I = 1 to N
N è il numero di controlli, o ho capito male la richiesta? |
|
antometal (Member)
Guru
Messaggi: 691
Iscritto: 12/09/2007
|
si hai ragione, ma poi sarà l' utente a crearli
posso comunque risolvere con una variabile pubblica, se non cè una funzione o simili (in vb6: nomecontrollo.count)...
xò mi sta venendo in mente che senza index è + complicato gestire i singoli controlli
ad es in vb6 se volevo che ogni 5, un command avesse il backcolor nero facevo così
Codice sorgente - presumibilmente VB.NET |
private sub command1_click(index as integer) for i=0 to command1.count step 5 connad1(i).backcolor=0 next i
|
con .net come faccio?
|
|
ruggy94 (Member)
Guru
Messaggi: 890
Iscritto: 21/04/2008
|
Mi vengono in mente due possibili soluzioni. O quando crei i button e li aggiungi alla List (prima di metterli sul form) esegui il ciclo for che hai postato (gli elementi di una List sono accessibili tramite indice), oppure se questo non ti è possbile, e hai solo i controlli della form, aggiungili ad una Lista con un For Each iterato sugli elementi del form, e poi segui la prima procedura.
Anche se puoi fare in molti altri modi (non ti verrà proprio naturale proveniendo da vb6). Ad esempio puoi sfruttare i nomi dei buttons ("button1","button2"), in particolare puoi trattare il numero alla fine del nome come un indice. Per farlo, basta che ti crei una funzione, che richieda come parametro il numero scelto. All'interno della funzione dovrai scrivere una cosa del genere:
Codice sorgente - presumibilmente VB.NET |
Function GetButton(Index as int16) as button For Each B as Button in Form.Controls If B.Name="button" & Index.tostring then return B End If Next End Function
|
Piccola precisazione...se utilizzi un For Each come ti ho scritto nella funzione, devi prestare attenzione ai controlli presenti sul form. Questo perchè scrivendo For each B as button, ogni qualvolta che il ciclo incontrerà un controllo che non sia un button, proverà ad effettuare il cast (cioè a convertirlo in un button) e questo ti genererà probabilmente un errore. Se dovessi avere controlli diversi da button nel form, dovresti modificare il for each in questo modo:
Codice sorgente - presumibilmente VB.NET |
For Each C as control in form.controls If Typeof(C) Is button then ... End If
|
In questo modo, ogni volta che il for each incontrerà un controllo nel form, controllerà se è un button o meno, e svolgerà il suo compito solo nel primo caso, altrimenti passerà al controllo successivo
Come al solito dimmi se non hai capito qualcosa |
|
antometal (Member)
Guru
Messaggi: 691
Iscritto: 12/09/2007
|
ti ringrazio, proverò domani(oggi) e ti dirò
son contento di sapere che alle 02:00 cè qualcuno disposto ad aiutarmi
|
|
ruggy94 (Member)
Guru
Messaggi: 890
Iscritto: 21/04/2008
|
Postato originariamente da antometal:
son contento di sapere che alle 02:00 cè qualcuno disposto ad aiutarmi |
Qualcuno? Visto il mio sonno direi "qualcosa" comunque male che vada domani (oggi) mattina risponderò alle eventuali domande che avrai postato durante il mio letargo |
|
antometal (Member)
Guru
Messaggi: 691
Iscritto: 12/09/2007
|
molto bene funziona, ho risolto così
Codice sorgente - presumibilmente VB.NET |
Function GetButton(ByVal Index As Int16) As Button For Each C As Control In Me.Controls If TypeOf (C) Is Button Then If C.Name = "btnArray_" & Index.ToString Then Return C End If Next End Function
|
ancora grazie,
a stanotte
|
|