Variare textbox "contenute" e non

giovedì 20 aprile 2006 - 10.21

Teech Profilo | Expert

Ciao a tutti!
Ho un problema di questo tipo: all'apertura di un form dovrei vuotare tutti i controlli textbox in modo dinamico ed ho creato una "struttura come di seguito riportata:

Private Sub frm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim cls As New MiaClasse
cls.VuotaControlli(Me)
End Sub

Public Class MiaClasse
Sub VuotaControlli(ByVal frm As System.Windows.Forms.Form)
'Vuota proprietà TEXT in TextBox
For Each ctl As System.Windows.Forms.Control In frm.Controls
If ctl.GetType Is GetType(System.Windows.Forms.TextBox) Then ctl.Text = ""
Next
End Sub
End Class

Se ho delle textbox "contenute" ad esempio in Groupbox non le considera. Come posso fare? (uso VB.NET 2003)

Grazie mille

Brainkiller Profilo | Guru

>Se ho delle textbox "contenute" ad esempio in Groupbox non le
>considera. Come posso fare? (uso VB.NET 2003)

Ciao prima di tutto,
il tuo costrutto va benissimo. In questo caso non funziona perchè la GroupBox è un container così come la Form, quindi container dentro container. Il For Each ciclerà sugli oggetti del primo container, la Form, che ti darà come ritorno il GroupBox più le altre label, ma non ciò che è contenuto nel GroupBox.

A questo punto dovrai verificare se l'oggetto è un GroupBox allora fai partire un altro ciclo for each sulla collection Controls del GroupBox.

Con la ricorsione è abbastanza semplice.

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

Teech Profilo | Expert

Non conoscevo la tecnica di ricorsione... mi hai aperto un mondo...
Grazie.

Brainkiller Profilo | Guru

E' semplicemente una funzione che richiama sè stessa un tot di volte.
Praticamente con una funzione riesci a percorrere tutto l'albero degli oggetti di una Form per esempio.
Qui hai un bell'articoletto:
http://www.dotnethell.it/articles/FunzioniRicorsive.aspx

ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5