Svuota textbox

sabato 07 luglio 2012 - 08.07
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows 7  |  Visual Studio 2008  |  MySQL 5.5

Mau67 Profilo | Expert

Buongiorno al forum,
come potete vedere da titolo ho la necessità di svuotare le textbox presenti in un win form il problema è che sono 70 e scrivere textbox1="" per 70 volte è stressante.
Ho trovato questa funzione che è molto utile e funzionante:

Public Sub PulisciTextBox(ByVal ctl As Control)
Dim Casella As TextBox = TryCast(ctl, TextBox)

If Casella IsNot Nothing Then
Casella.Text = String.Empty
ElseIf ctl.Controls.Count > 0 Then
For k As Integer = 0 To ctl.Controls.Count - 1
'Ricorsione
PulisciTextBox(ctl.Controls(k))
Next k
End If
End Sub

il problema che io delle 70 textbox presenti nel form ne dovrei pulire 60 lasciandone 10 con i dati.

le dieci da non pulire sono le textbox1 alla textbox9 come posso correggere il codice?

grazie in anticipo a tutti
Mau67

InsettoScoppiettato Profilo | Junior Member

Fai un controllo sul nome:

te lo scrivo in C#:

foreach (Control ctrl in this.Controls) { if (ctrl.GetType().Name.ToLower() == "label") { if (ctrl.Name != "nomeDaNonModificare1" || ctrl.Name != "nomedanonmodificare2...eccc") PulisciTextBox(ctrl); } }

Non ho capito dov'è la ricorsione, ma comunque non serve.... ciauz

Alessandro Parma

avarrati Profilo | Newbie

io avrei fatto così

For Each TextxBox In Me.Controls If TypeOf TextxBox Is TextBox AndAlso TextxBox.Name.ToString.Length > 8 Then TextxBox.ResetText() End If Next

Vinsent Profilo | Senior Member

>le dieci da non pulire sono le textbox1 alla textbox9 come posso
>correggere il codice?

Puoi usare un' arraylist contenente i nomi delle textbox, occhio alle maiuscole, e un IF per verificare se il nome del controllo corrente è contenuto nell' arraylist:

Public Sub PulisciTextBox(ByVal ctl As Control) Dim elenco_tbox As New ArrayList elenco_tbox.Add("TextBox1") elenco_tbox.Add("TextBox2") elenco_tbox.Add("TextBox3") 'eccetera Dim Casella As TextBox = TryCast(ctl, TextBox) If Casella IsNot Nothing Then Casella.Text = String.Empty ElseIf ctl.Controls.Count > 0 Then For k As Integer = 0 To ctl.Controls.Count - 1 If elenco_tbox.Contains(ctl.Controls(k).Name) = False Then PulisciTextBox(ctl.Controls(k)) End If Next k End If End Sub

jekisi Profilo | Senior Member

Un altro modo molto semplice è il seguente:

Inserisci il controllo PANEL, metti dentro tutte le text che devi pulire, poi, per fare un esempio, metti un button e nell' evento click scrivi:

For Each ctrl As Control In Me.Panel1.Controls
DirectCast(ctrl, TextBox).Text = ""
Next

Il seguente codice ti pulisce tutte le textbox che stanno all' interno del Panel1.

Che versione di vb usi?

Distinti Saluti

Fabio Messina

Fabiointernational@msn.com
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