Ciao scusate volevo sapere qual'è il metodo piu facile per rimettere tutti i controlli di una form allo stesso colore all'interno di un evento
Ciao scusate volevo sapere qual'è il metodo piu facile per rimettere tutti i controlli di una form allo stesso colore all'interno di un evento
Tony
codice:On error resume next 'Non tutti i controlli potrebbero avere la proprietà backcolor Dim ctrl As Control for each ctrl in Me.Controls ctrl.BackColor='colore next
Amaro C++, il gusto pieno dell'undefined behavior.
Piuttosto che intercettare l'errore usando un costrutto che è un vecchio retaggio del VB6, non sarebbe meglio verificare la classe di appartenenza dei controlli su cui si vuole agire e, tramite un "cast" (trattamento come classe ben determinata), accedere in sicurezza alle proprietà?
Per esemplificare tramite codice (anche se non uso abitualmente VB.NET):
(non ho verificato il codice con il compilatore)codice:Dim aControl As Control For Each aControl In Me.Controls If aControl Is TextBox Then CType(aControl, TextBox).Text = "Hello!" End If Next
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
ok grazie, un'ultima cosa anche se non so se è interente alla discussione:
La situzione è questa (motlo semplicemente ridotto all'osso quello che dovrei fare):
entrando nel form mi metto tutte le textbox a enabled, ovviamente il colore è quello di sistema.
Ho creato un pulsante che mi rende enabled a true tutti i controlli textbox e combobox etc.. e prende il colore da me dato cioè bianco
Il problema che il programma consente di fare diverse cose per cui posso tranquillamente chiudere il form che in questo caso lo metto a invisible.
Quando rientro lo rimetto a enabled false ma stranamente rimane con il colore bianco, anche se effettivamente è disabilitato. Come potrei risolvere il problema? dovrebbe avere il colore che aveva quando sono entrato la prima volta a enabled false!!
Sapete darmi una dritta?
ps. la sintassi di prima mi dice che textbox è un tipo e non può essere utilizzata come espressione però per il resto è perfetto a quello che devo fare io! l'ho cambiato cosi:
codice:Dim aControl As Control For Each aControl In Me.Controls If TypeName(aControl) = "TextBox" Or TypeName(aControl) = "ComboBox" Then aControl.BackColor = SystemColors.Window End If Next
Tony
forse ho risolto mettendolo a systemcolors.controlOriginariamente inviato da tony83
ok grazie, un'ultima cosa anche se non so se è interente alla discussione:
La situzione è questa (motlo semplicemente ridotto all'osso quello che dovrei fare):
entrando nel form mi metto tutte le textbox a enabled, ovviamente il colore è quello di sistema.
Ho creato un pulsante che mi rende enabled a true tutti i controlli textbox e combobox etc.. e prende il colore da me dato cioè bianco
Il problema che il programma consente di fare diverse cose per cui posso tranquillamente chiudere il form che in questo caso lo metto a invisible.
Quando rientro lo rimetto a enabled false ma stranamente rimane con il colore bianco, anche se effettivamente è disabilitato. Come potrei risolvere il problema? dovrebbe avere il colore che aveva quando sono entrato la prima volta a enabled false!!
Sapete darmi una dritta?
ps. la sintassi di prima mi dice che textbox è un tipo e non può essere utilizzata come espressione però per il resto è perfetto a quello che devo fare io! l'ho cambiato cosi:
codice:Dim aControl As Control For Each aControl In Me.Controls If TypeName(aControl) = "TextBox" Or TypeName(aControl) = "ComboBox" Then aControl.BackColor = SystemColors.Window End If Next
Tony
sfortunatamente non mi modifica il colore anche perchè era da un'altro form(principale) che operavo quindo dopo aver fatto tanti e tanti tentativi ho fatto questo ultimo:
...non funzionante, per poi scrivere tutti e 20 i campi a mano..codice:Dim contatore As Short = 0 For Each aControl In FormContratti.CustomerForm.Controls If TypeName(aControl) = "TextBox" Or TypeName(aControl) = "ComboBox" Then aControl.BackColor = SystemColors.Control FormContratti.CustomerForm.Controls(contatore).BackColor = aControl.BackColor End If contatore += 1 Next![]()
Tony
Pardon, non avevo notato che si trattava di VB.NET.Originariamente inviato da alka
Piuttosto che intercettare l'errore usando un costrutto che è un vecchio retaggio del VB6, non sarebbe meglio verificare la classe di appartenenza dei controlli su cui si vuole agire e, tramite un "cast" (trattamento come classe ben determinata), accedere in sicurezza alle proprietà?
Per esemplificare tramite codice (anche se non uso abitualmente VB.NET):
(non ho verificato il codice con il compilatore)codice:Dim aControl As Control For Each aControl In Me.Controls If aControl Is TextBox Then CType(aControl, TextBox).Text = "Hello!" End If Next
Ciao!![]()
Amaro C++, il gusto pieno dell'undefined behavior.