Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [vb.net 2008] creare array di conrtolli
Forum - C# / VB.NET - [vb.net 2008] creare array di conrtolli - Pagina 2

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
antometal (Member)
Guru


Messaggi: 691
Iscritto: 12/09/2007

Segnala al moderatore
Postato alle 1:31
Martedì, 04/08/2009
e se volessi sapere quanti controlli ho creato?

PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 1:31
Martedì, 04/08/2009
Testo quotato

Postato originariamente da antometal:
grazie ancora


Figurati ;)

PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 1:33
Martedì, 04/08/2009
Testo quotato

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?

PM Quote
Avatar
antometal (Member)
Guru


Messaggi: 691
Iscritto: 12/09/2007

Segnala al moderatore
Postato alle 1:42
Martedì, 04/08/2009
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

  1. private sub command1_click(index as integer)
  2. for i=0 to command1.count step 5
  3. connad1(i).backcolor=0
  4. next i



con .net come faccio?

PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 1:54
Martedì, 04/08/2009
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

  1. Function GetButton(Index as int16) as button
  2. For Each B as Button in Form.Controls
  3. If B.Name="button" & Index.tostring then
  4. return B
  5. End If
  6. Next
  7. 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

  1. For Each C as control in form.controls
  2. If Typeof(C) Is button then
  3. ...
  4. 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 :k:
Come al solito dimmi se non hai capito qualcosa :D

PM Quote
Avatar
antometal (Member)
Guru


Messaggi: 691
Iscritto: 12/09/2007

Segnala al moderatore
Postato alle 1:59
Martedì, 04/08/2009
ti ringrazio, proverò domani(oggi) e ti dirò

son contento di sapere che alle 02:00 cè qualcuno disposto ad aiutarmi:D

PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 2:02
Martedì, 04/08/2009
Testo quotato

Postato originariamente da antometal:
son contento di sapere che alle 02:00 cè qualcuno disposto ad aiutarmi:D


Qualcuno? Visto il mio sonno direi "qualcosa" :rotfl: comunque male che vada domani (oggi) mattina risponderò alle eventuali domande che avrai postato durante il mio letargo :D

PM Quote
Avatar
antometal (Member)
Guru


Messaggi: 691
Iscritto: 12/09/2007

Segnala al moderatore
Postato alle 13:00
Martedì, 04/08/2009
molto bene funziona, ho risolto così

Codice sorgente - presumibilmente VB.NET

  1. Function GetButton(ByVal Index As Int16) As Button
  2.         For Each C As Control In Me.Controls
  3.             If TypeOf (C) Is Button Then
  4.                 If C.Name = "btnArray_" & Index.ToString Then Return C
  5.             End If
  6.         Next
  7.     End Function



ancora grazie,
a stanotte:rotfl:

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo