Newsgroup: it.comp.lang.visual-basic
Titolo: Suggerimento per "pivello tardone"

Da molto uso Vb(5) ed ora stò cercando di imparare l' uso di Vb2005
(express ed.)
Ero affezionato alle matrici di controllo, ora sono un pò spaesato.
In VB5 indicizzavo una textbox da 0 a 2 poi per assegnare il valore
contenuto in una matrice generavo un ciclo:
dim i as byte
dim Valore(0 to 2) as string
Valore(0)="aaaa"
Valore(1)="bbbb"
Valore(2)="cccc"
for i = 0 to 2
textbox(i).text=Valore(i)
next  i


continua......
ora in Vb2005, non essendo più supportate le matrici di controllo, una
semplice implementazione di questo tipo come può essere eseguita?

 next  i
Non so se è un modo molto pulito, ma puoi assegnare ai tuoi controlli 
una proprietà Tag, e poi ciclare i controlli nella collezione del 
contenitore (es il form), e passare la proprietà tag.
Esempio:
Ho 3 TextBox sul form, a cui ho assegnato tag 0, 1 e 2.
         Dim Valore(0 To 2) As String
         Valore(0) = "aaaa"
         Valore(1) = "bbbb"
         Valore(2) = "cccc"
         For Each ctrl As Control In Me.Controls
             If (TypeOf ctrl Is TextBox) Then
                 DirectCast(ctrl, TextBox).Text = Valore(CInt(ctrl.Tag))
             End If
         Next
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Saluti, VITRIOL


grazie per il suggerimento
volendo invece usare la Classe Control.ControlCollection sai come
potrei procedere? (se è una strada percorribile)

 potrei procedere? (se è una strada percorribile)
E' quello che ho fatto nel mio esempio :-)
Me.Controls è una proprietà che ritorna una ControlCollection, che 
contiene tutti i controlli che stanno sul form.
Ad esempio anche i Panel, che sono oggetti contenitore, implementano una 
proprietà Controls che elenca tutti i controlli che contengono.


PS
Premesso che anch'io sono un "pivello tardone", e resterò così a vita, 
ha provato ad utilizzare le collezioni generiche in questo modo. Magari 
qualcuno più esperto potrà dire se è ragionevole, o se ci sono problemi 
di qualche tipo:
         Dim tb As New Collections.Generic.List(Of TextBox)
	'Aggiungo le TextBox presenti sul form princilale
	With tb
             .Add(TextBox1)
             .Add(TextBox2)
             .Add(TextBox3)
         End With
         Dim Valore(0 To 2) As String
         Valore(0) = "aaaa"
         Valore(1) = "bbbb"
         Valore(2) = "cccc"
         For i As Integer = 0 To 2
             tb(i).Text = Valore(i)
         Next i



grazie mille.
questa soluzione è ottima ed era proprio a questo che miravo.
Certo che questa dichiarazione: "Dim tb As New
Collections.Generic.List(Of TextBox)" non avrei proprio saputo dove
andare a cercarla.
Quì urge acquisto e lettura di manuale Vb2005!
grazie ancora

next  i
Ciao pietro,
se le TextBox si chiamano TextBox1,TextBox2 e TextBox3 potresti fare cosě
es..
----
 Dim i As Byte
 Dim Valore(0 To 2) As String
 Valore(0) = "aaaa"
 Valore(1) = "bbbb"
 Valore(2) = "cccc"
 For i = 0 To 2
     Me.Controls("TextBox" & i + 1).Text = Valore(i)
 Next
----
Ciao
Giorgio 

 Giorgio
Beh, questa poi è l' apoteosi della semplicità!
Grazie mille Giorgio per il tuo esempio, cercavo soluzioni
cervellotiche quando invece.............
Un ringraziamento a tutti, grazie VITRIOL e grazie Giorgio.
Ora superato lo "scoglio" matrici di controlli passo oltre!

  Next
QUESTO NON FUNZIONA!
SAPETE PERCHE'?

 SAPETE PERCHE'?
Perché il contenitore dei MenuItem č il controllo MenuStrip, non il form.
Prova a fare cosě:
         For i = 0 To 2
             Me.MenuStrip1.Items("f" & i + 1).Text = Valore(i)
         Next
-- 


          Next
non funziona, in quanto f1 e f2 sono sottomenù di un menù (menu_main)
per intenderci, se f1 e f2 fossero visibili sulla barra del menù il
codice funzionerebbe.

 codice funzionerebbe.
Va bene dai, un po' di fantasia :-)
Le voci di menù e sottomenù sono oggetti ToolStripMenuItem, quindi 
scorri gli items dell'oggetto contenitore che ti interessa.
Ammettiamo che hai una voce che si chiama ToolStripMenuItem1, e che 
contiene i sottomenù f1, f2 e f3. Fai:
For i = 0 To 2
	ToolStripMenuItem1.DropDownItems("f" & i + 1).Text = Valore(i)
Next
-- 


 
ropi...@libero.it
 ha scritto:

grazie VITRIOL,  così funziona.
scusa ma a fantasia stò proprio messo male!