|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Registered User
Iscritto dal: Jan 2006
Messaggi: 22
|
Ciclo FOR Problema Variabile con VB .NET
Sale a tutti,
su un form devo valorizzare (riempire) diverse TextBox, mah ho un problema in merito.. Visual Basic .NET ecco il codice : Dim esegui As String Dim i As Integer For i = 1 To 4 esegui = "TextBox" & i & ".Text = ciao" esegui() Next nota: le TextBox sono diverse, TextBox1, TextBox2, TextBox3, TextBox4, ecc.. intendo riempirle con un ciclo for, il problema è che : esegui() da errore e non esegue il contenuto in esso.(non so se mi spiego).. ipotizzo che il problema sia nel fatto che la variabile esegui forse non deve essere di tipo As String. Va bene anche una soluzione alternativa alla variabile esegui().. in definitiva come valorizzo diverse TexBox con un numero progressivo utilizzando un ciclo FOR???? By MrJohnny. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2002
Città: udine
Messaggi: 546
|
hai provato con un array di oggetti?
__________________
a chi non piace il vino... dio neghi anche l'acqua! ![]() DELL Latitude E4300, iPhone 6 |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
Quote:
dato che lui vuole un oggetto e non una stringa. Hai due metodi: o te li fai tutti separati oppure come ti hanno consigliato si fanno gli array di oggetti e dopo accedi con TextBox[i].text ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2003
Città: Lugano (Svizzera)
Messaggi: 598
|
Se non ho capito male la tua richiesta, potresti anche scorrere tra tutti i controlli nel tuo contenitore..
Un qualcosa tipo For Each ctr As Control In Page.Controls If TypeOf ctr Is TextBox Then ctr.Text = "ciao" End If Next No?
__________________
XBox GamerTag : Black CrB | PSN : Black_CrB | Steam : CrB® |
|
|
|
|
|
#5 | |
|
Registered User
Iscritto dal: Jan 2006
Messaggi: 22
|
Quote:
Faccio un'altro esempio per meglio spiegarmi su cosa puo' essere utile questa cosa.. dunque: Public sound1 As New gscore10.audio Public sound2 As New gscore10.audio Public sound3 As New gscore10.audio Public sound4 As New gscore10.audio Public sound5 As New gscore10.audio Public sound6 As New gscore10.audio Public sound7 As New gscore10.audio Public sound8 As New gscore10.audio ' questo è un player per la riproduzione contemporanea di piu' files audio, ed utilizza una libreria gscore10, 'sopra dichiarata adesso potrei aver di bisogno di un ciclo For per porre in STOP o in Play questi Sound sopra dichiarati.. scrivo un esempio: Dim i As Integer For i = 1 To 8 sound & i &.audioPlay() Next mah da errore... Stesso problema delle TextBox, dice che sound (senza il numero) non è dichiarato e quindi non esiste. Spero di non aver generato delle confusioni con questo nuovo esempio.. La soluzione che cerco e': come valorizzare o impostare oggetti dichiarati con un numero progressivo sfruttando una variabile numerica di un ciclo FOR. per Fenomeno85: Dim i As Integer For i = 1 To 4 TextBox[i].text = ciao next si va bene, mah la sintassi o il codice funzionante quale sarebbe?? perche' cosi: TextBox[i].text = ciao non l'accetta! Se è possibile un esempio funzionante !! Io continuo a vedere come possibile soluzione una cosa di questo tipo: Dim esegui As BhoMistero Dim i As Integer For i = 1 To 4 esegui = "sound" & i & ".audioPlay()" esegui() Next Mah chiaramente a me interessa una soluzione funzionate e non ipotesi probabili.. By MrJohnny. Ultima modifica di mrjohnny : 26-01-2006 alle 01:14. |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
Quote:
fenomeno ti ha proposto una possibile soluzione (che ovviamente sta a te adattare alle tue eigenze) (...e per inciso non assurda come la tua) non mi sembra il caso usare questo tono! se fossi in te mi affretterei a porre le mie scuse! vuoi la pappa pronta? ...e, secondo lo spunto di Crashbandy80, eccoti la pappa pronta: Codice:
Public Sub popolaTextBox()
For Each ctrl As Windows.Forms.Control In Me.Controls
If ctrl.GetType.ToString = TextBox1.GetType.ToString Then
ctrl.Text = "ciao"
End If
Next
End Sub
ma toglimi una curiosità, arrivi dalla programmazione web? perchè io na roba del genere: Codice:
esegui = "sound" & i & ".audioPlay()" esegui() 'notte |
|
|
|
|
|
|
#7 | |
|
Registered User
Iscritto dal: Jan 2006
Messaggi: 22
|
Quote:
sono semplicemente un po' ruvido di carattere.. non c'e' intenzione d'offendere nessuno.. (specialmente senza motivo!) anzi con questo scritto si vuole appunto chiarire questo aspetto !! la pappa funziona perfettamente, e si ringraziano coloro che l'hanno pensata e perfezionata.. e resa disponibile e pronta all'uso a chiunque visita hwupgrade, non e' una questione di pappa pronta, ma se si riesce a fornire un codice funzionante, è una cosa brutta? Forse mi sbaglio mah io ipotizzo che sia possibile inserire dentro una variabile una stringa di comando, e poi mandarla in esecuzione da dentro la variabile, o oggetto creato.. il problema che tipo di variabile deve essere o come creare l'oggetto, che esegue quello che si desidera.. la mia strada (per alcuni assurda) della variabile esegui(), sopra citata.. è partorita dal fatto che non riesco ad adattare : for i = 1 to 4 TextBox[i].text = ciao next l'utilizzo della variabile "i" è interessante e utile per valorizzare degli oggetti con un numero progressivo solo pari.. o solo fino ad un certo valore, esempio: sound & i &.audioPlay() che hanno un valore pari, ed sound & i &.audioStop() che hanno un valore dispari.. Si mah?? la domanda è: come si adatta la variabile: "i" per questo tipo di oggetti? sound & i &.audioPlay() ??? TextBox[i].text = ciao ??? Si ringraziano tutti coloro che vogliono partecipare, con il loro sapere, senza accende polemiche sterili.. By MrJohnny. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Aug 2003
Città: Lugano (Svizzera)
Messaggi: 598
|
Non ho ben capito cosa vuoi fare..
E comunque, ammesso che sia possibile "costruire" il nome della variabile a cui assignare un valore tramite un ciclo (in javascript per esempio era fattibile), non penso sia il modo migliore di lavorare Tu con il codice riportato da 0rph3n, vai a scorrere tra tutti i controlli di tipo "textbox" che hai nel tuo contenitore (io avevo messo Page, ma poteva essere un form, un pannello, ...), e quindi ti da la possibilita' di poter effettuare determinate operazioni per ciascun oggetto. Codice:
Public Sub popolaTextBox()
For Each ctrl As Windows.Forms.Control In Me.Controls
If ctrl.GetType.ToString = TextBox1.GetType.ToString Then
<Qui dentro puoi effettuare i controlli che ti interessano,
quindi dirgli di assegnare un determinato valore se il tuo "i"
(che sarebbe equivalente al nome del textbox, proprieta' del
controllo) e' pari o dispari, o qualsiasi altra cosa tu voglia fare.. >
End If
Next
End Sub
__________________
XBox GamerTag : Black CrB | PSN : Black_CrB | Steam : CrB® Ultima modifica di Crashbandy80 : 26-01-2006 alle 14:01. |
|
|
|
|
|
#9 |
|
Registered User
Iscritto dal: Jan 2006
Messaggi: 22
|
Crashbandy80 Scrive:Non ho ben capito cosa vuoi fare..
------------- Mi spiego meglio.. sound1.audioPlay() devo sostituire il numero 1 con la variabile "i" quindi: sound & i &.audioPlay() mah non l'accetta! ----------------------- Codice:
Public Sub popolaTextBox()
For Each ctrl As Windows.Forms.Control In Me.Controls
If ctrl.GetType.ToString = TextBox1.GetType.ToString Then
<Qui dentro puoi effettuare i controlli che ti interessano,
quindi dirgli di assegnare un determinato valore se il tuo "i"
(che sarebbe equivalente al nome del textbox, proprieta' del
controllo) e' pari o dispari, o qualsiasi altra cosa tu voglia fare.. >
End If
Next
End Sub
Ok graz.. devo fare delle prove.. e poi vi scrivo i risultati ottenuti.. Una cosa non ho ben chiara.. (adesso sono di premura per fare le prove.. del caso..) mah se io voglio escludere delle TextBox lo posso fare con questo sistema?? anche se è questa una possibile soluzione valida.. io vorrei poter utilizzare : sound & i &.audioPlay() TextBox[i].text = ciao inserendo la "i" al posto del numero.. mah per il momento non riesco a farglio accettare.. scappo.. By MrJohnny. Ultima modifica di mrjohnny : 26-01-2006 alle 16:51. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Aug 2003
Città: Lugano (Svizzera)
Messaggi: 598
|
Si con il metodo esposto da noi puoi escludere i textbox in base a qualsiasi criterio tu voglia inserendo delle condizioni.
Il metodo che vuoi utilizzare tu non penso sia fattibile, o almeno io non sono in grado di aiutarti mi spiace.
__________________
XBox GamerTag : Black CrB | PSN : Black_CrB | Steam : CrB® |
|
|
|
|
|
#11 | |
|
Registered User
Iscritto dal: Jan 2006
Messaggi: 22
|
Quote:
scrivo per documentare il forum uno tra i vari test da me effettuati: For Each ctrl As Windows.Forms.Control In Me.Controls If ctrl.GetType.ToString = Label1.GetType.ToString Then If ctrl.Name = "Label" & i Then ctrl.Text = "Ok" End If End If Next il sistema funziona e va bene, c'e' da notare che ogni volta che desidero aggiornare una label sfruttando la variabile "i" il ciclo for ricontrolla tutti gli oggetti, e quindi si generano dei cicli inutili in +.. inquanto io già conosco il nome della label che è questo: "Label" & i e non ho bisogno di controllarli tutti.. Cmq l'importante che cosi'..funziona!! graz. ------------- questo sistema (o equivalente) si puo' sfruttare con : Public sound1 As New gscore10.audio Public sound2 As New gscore10.audio Public sound3 As New gscore10.audio Public sound4 As New gscore10.audio Public sound5 As New gscore10.audio For i = 1 to 3 sound(i).audioPlay() next ???? voglio mettere in Play, solo: sound1, sound2, sound3 By MrJohnny. Ultima modifica di mrjohnny : 26-01-2006 alle 23:11. |
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
Quote:
![]() 1 3 del ciclo per te sono pari?! l'indice funziona SOLO se hai creato un array di oggetti. ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#13 | |||
|
Registered User
Iscritto dal: Jan 2006
Messaggi: 22
|
Quote:
nei libri scrivono esempi funzionanti, e non parlano di pappa! Quote:
Dim i As Integer For i = 1 To 4 If i Mod 2 = 0 Then TextBox[i].text = "ciao" End If Next con l'esempio scritto sopra, valorizza solo le text pari, escludendo le dispari.. (pero' la varibile "i" cosi' inserita non l'accetta) .. Mah lascia perdere il discorso pari o dispari, visto che ti genera confusione... ----------- Quote:
Public sound1 As New gscore10.audio Public sound2 As New gscore10.audio Public sound3 As New gscore10.audio Public sound4 As New gscore10.audio Public sound5 As New gscore10.audio For i = 1 to 3 sound(i).audioPlay() next ???? Metti in Play, solo: sound1, sound2, sound3 sto valutando come sfruttare il suggerimento di: Crashbandy80, mah in questo caso non mi riesce.. By MrJohnny. Ultima modifica di mrjohnny : 27-01-2006 alle 13:08. |
|||
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Aug 2003
Città: Lugano (Svizzera)
Messaggi: 598
|
Quote:
Codice:
Public sound(5) As gscore10.audio Ora non ricordo precisamente, ma non mi pare sia possibile utilizzare il costrutto New nella dichiarazione di un array, quindi devi inizializzarli in seguito prima dell'uso. Ora ci puoi accedere come hai scritto tu : Codice:
For i As Integer = 0 to 2 sound(i) = New gscore10.audio sound(i).audioPlay() Next Se vuoi puoi scorrerli tutti con : Codice:
For i As Integer = 0 to sound.Length
If i Mod 2 = 0 Then
sound(i) = New gscore10.audio
sound(i).audioPlay()
End If
Next
__________________
XBox GamerTag : Black CrB | PSN : Black_CrB | Steam : CrB® Ultima modifica di Crashbandy80 : 27-01-2006 alle 13:52. |
|
|
|
|
|
|
#15 | |
|
Registered User
Iscritto dal: Jan 2006
Messaggi: 22
|
Quote:
(sono di premura..) mah mi sembre perfetto... se ti serve qualche cosa.. non esitare a contattarmi!! By MrJohnny. |
|
|
|
|
|
|
#16 |
|
Registered User
Iscritto dal: Jan 2006
Messaggi: 22
|
Ok provato!!
Funziona come previsto!!! By MrJohnny. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:37.





















