[VB2008] Array

martedì 10 gennaio 2012 - 13.46

gigibd Profilo | Newbie

ciao a tutti, volevo chiedervi se esiste la possibilità di creare un array di label, mi spiego meglio, adesso io faccio cosi:

dim array(200) as string

label1.text=a(1)
label2.text=a(2)
label3.text=a(3)
label4.text=a(4)
label5.text=a(5)
label6.text=a(6)
ecc

ma esiste la posibilità di scrivere una cosa tipo:

label(i).text=a(i)

magari con un ciclo, in modo da non dover scrivere 200 e passa volte label.text=a ?

grazie intanto

Jeremy Profilo | Guru

Ciao Luigi
Puoi creare una List(Of Label) .... Guarda su MSDN
Facci sapere....
Ciao

gigibd Profilo | Newbie

ho trovato qualcosa, ma in .net, io ho il 2008 e non conosco il .net.
ho trovato però una cosa di questo tipo:

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
Dim m(6) As Label
m(1) = Label1
m(2) = Label2
m(3) = Label3
m(4) = Label4
m(5) = Label5
m(6) = Label6
i = 0
While i < 6
m(i).Text = "ciao"
i = i + 1
End While
End Sub
End Class

ma da errore su m(i).Text = "ciao", e non so come venirne fuori

Jeremy Profilo | Guru

Ciao Luigi.
A parte il fatto che così non è bellissimo ma potrebbe andare....
il codice che hai scritto è .Net.
Vb2008 è .Net.

gigibd Profilo | Newbie

ok scusa l'ignoranza, ma perchè allora su tante guide di .net non mi funzionano i loro codici?
mi manca qualche library? a suo tempo avevo cercato di capire se mi mancava qualcosa ma non ho trovato gran che.

Jeremy Profilo | Guru

>ok scusa l'ignoranza, ma perchè allora su tante guide di .net
>non mi funzionano i loro codici?
Dipende..... forse sbagli qualcosa tu o forse sbagliano qualcosa loro ..... difficile da dire senza sapere a quale codice ti riferisci
>mi manca qualche library? a suo tempo avevo cercato di capire
>se mi mancava qualcosa ma non ho trovato gran che.
Potrebbe dipendere dalla versione del .Net Framework o dalla versione di VisualStudio.... anche qui, difficile da dire senza sapere a cosa ti riferisci.

Facci sapere....

gigibd Profilo | Newbie

io ho Visual Basic 2008 Express Edition.
comunque al di la di quello non riesco a far andare l'"array" dei label...grazie intanto geremy

Jeremy Profilo | Guru

Ora sono fuori e dal Tablet mi viene difficile scrivere del codice.
Se hai pazienza stasera provo a scriverti qualcosa.
Ciao

gigibd Profilo | Newbie

si si figurati, grazie mille

Jeremy Profilo | Guru

Ciao Luigi.
Può darsi non abbia capito del tutto la tua richiesta ma, supponiamo che il tuo obbiettivo sia quello di scrivere lo stesso testo in tutte le label presenti sul Form(anche se non ne capisco il senso)

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load For Each cnt As Control In Me.Controls If TypeOf cnt Is Label Then cnt.Text = String.Format("Label{0}", Me.Controls.IndexOf(cnt).ToString) End If Next End Sub

Se invece non avessi capito la tua richiesta ed il tuo obbiettivo fosse un'altro ..... facci sapere....
Ciao

gigibd Profilo | Newbie

ciao geremy, ho provato il tuo codice, mi sostituisce i nomi dei label, cioè se nel form sono ordinati label1, label2, ecc fino a label6, lui me li ordina label 6, label 5, fino a label 1. non so perchè.
metà del codice che mi hai scritto non so cosa sia, "or Each cnt As Control In Me.Controls" non lo conosco (ignoranza mia).
comunque il mio obiettivo sarebbe di cambiare il testo del label assendolo ad un array: label(i).text=a(i), in modo da non dover scrivere:

label1.text=a(1)
label2.text=a(2)
label3.text=a(3)
label4.text=a(4)
label5.text=a(5)
label6.text=a(6)

perchè se ho a(tanto) figurati quante righe..

Jeremy Profilo | Guru

Ciao Luigi.
Il mio era solo un esempio .... che potrebbe essere modificato in questo modo
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Spero di essermi spiegato meglio.

Se invece vuoi solo creare un array di label
Private Labels(6) as Label
e poi vedi tu .....

Facci sapere ...
Ciao

gigibd Profilo | Newbie

ok grazie, stasera provo e poi ti dico

gigibd Profilo | Newbie

ciao, alla fine ho fatto come dicevi e funziona:

For Each cnt As Control In Me.Controls
If TypeOf cnt Is RichTextBox Then
cnt.Text = torengo(Me.Controls.IndexOf(cnt))
End If
Next

così ho risparmiato un sacco di righe, grazie mille jeremy
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 !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5