Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
.NET Framework
Proprietà index per i controlli di una windows form
mercoledì 28 gennaio 2009 - 12.08
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
LLL
Profilo
| Newbie
18
messaggi | Data Invio:
mer 28 gen 2009 - 12:08
Salve a tutti,
da un po' di tempo cercavo il modo di enumerare in vb.net 2003 in modo automatico una serie di controlli del mio form, per assegnargli delle proprietà in un ciclo senza doverle scrivere in modo esplicito per tutti quanti.
Ad esempio invece che scrivere per 50 textbox:
textbox1.text=1
textbox2.text=2
textbox3.text=3
...ecc.
scrivere con un ciclo:
for i =1 to 50
textbox(i).text = i
next i
La scrittura textbox(i) però non è accettata da vb.net e non ho trovato nessun altro tipo di carattere che funzioni a questo scopo al posto delle parentesi ($,%,[,...). Un carattere escape di questo tipo esiste quasi in ogni linguaggio di programmazione e mi sembra strano che non ci sia in vb.net, in ogni caso, non trovandolo, ho provato un comando alternativo:
For k = 1 To 3
Me.Controls.Item(k).text = k
Next k
Questo comando funziona a patto che l'indice k sia il valore dell'indice associato all'oggetto.
Il problema è che riesco a recuperare l'indice ma non ad impostarlo, ovvero per sapere che indice è associato, ad esempio, alla textbox1, posso farmi stampare da qualche parte il valore:
Me.Controls.IndexOf(textbox1)
ma dovrei farlo per ogni textbox e la cosa chiaramente vanifica lo scopo della mia automazione.
Qualcuno sa se quest'indice si trova nella finestra di progettazione o se è possibile assegnarlo in qualche modo?
Grazie per l'aiuto,
LLL
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
mer 28 gen 2009 - 12:28
Ciao,
prova eventualmente a crearti un dictionary di controlli che conterrà come chiave il nome del controllo e come valore il riferimento
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
mer 28 gen 2009 - 21:19
Ciao
Questo codice io lo uso per cancellare il testo su tutte le TextBox presenti sul Form con particolare attenzione che se queste TextBox sono sia sul Form che all'interno di un'altro controllo (ad es. un GroupBox) quelle all'interno del controllo non le vede.
For Each ctl As Control In Me.Controls
If TypeOf ctl Is TextBox = True Then
MsgBox(ctl.Name)
End If
Next ctl
Se invece devi controllare solo alcune TextBox potresti indicare un'eventuale condizione del tipo
For Each ctl As Control In Me.Controls
If TypeOf ctl Is TextBox = True Then
If ctl.Name.StartsWith("pippo") Then
ctl.Text = ""
End If
End If
Next ctl
Quindi imposterai il nome delle TextBox da controllare con .Name = pippoQualcosa
Cosa ne dici?
Ciao
alexmed
Torna su
Stanze Forum
Elenco Threads
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 !