Do While per somma contenuto TextBox

martedì 20 aprile 2004 - 08.59

wsaurim Profilo | Newbie

Ciao gente,

come si può fare un loop all'interno del quale sommo tutti i contenuti delle mie textbox?

Ex. Sommare il contenuto di tutte le textbox da TextBox1 a TextBox24

Dim Somma as Integer=0
Dim i as Integer=1 ' contatore
Do
Somma=Somma+TextBox[i].Text
While i<24

Grazie!

Ciao, Auri

Brainkiller Profilo | Guru

Ti faccio un esempio generale che fa la somma di tutte le TextBox contenute sulla tua form:

Dim somma As Integer
somma = 0

For Each a As Object In Me.Controls
If (a.GetType.Name = "TextBox") Then
somma = somma + Integer.Parse(CType(a, TextBox).Text)
End If
Next

Console.WriteLine(somma.ToString())

ciao
david

wsaurim Profilo | Newbie

grazie Brainkiller,

io dovrei, sullo stesso form, sommare due tipi di textbox

TextCosto1V -> TextCosto24V sul campo TextSommaV

TextCosto1N -> TextCosto24N sul campo TextSommaN

... help :-S

Grazie!

Brainkiller Profilo | Guru

Io ti ho fatto un esempio generico ora con un po' di inventiva ci puoi arrivare anche tu.

Dentro il ciclo con l'istruzione:

CType(a, TextBox).Name

accedi al nome dell'oggetto. Avendo il nome puoi usare il metodo .IndexOf per cercare una stringa all'interno di un'altra. Quindi puoi fare un If e partizionare il flusso e quindi sommare contemporaneamente i valori di alcune textbox (quelle hanno nel nome la lettera V) e quelle che hanno la N, quindi:

Dim nome as string
nome=CType(a, TextBox).Name
if nome.IndexOf("V")<>-1 then
' FAI LA SOMMA DEI VALORI DELLE TEXTBOX V
elseif nome.IndexOf("N")<>-1 then
' FAI LA SOMMA DEI VALORI DELLE TEXTBOX N
end if

ciao
david



wsaurim Profilo | Newbie

grazie 1000,

solo ora mi sono accorto che il tutto non funzionava perchè i controlli sono interni ad un Panel ed una GroupBox!

cmq funziona!

grazie again ;P

Auri

Brainkiller Profilo | Guru

Eh si, in quel caso invece che usare Me.Controls devi usare GroupBoxName.Controls se no non li vedi.
ciao

david

wsaurim Profilo | Newbie

posto il risultato, magari può tornare utile in futuro ;)

Form che contiene un panel (Panel1) al cui interno ci sono N GroupBox all'interno dei quali ci sono le TextBox.

Dim g As GroupBox
For Each g In Me.Panel1.Controls 'ciclo su tutti i groupbox
If (g.GetType.Name = "GroupBox") Then
MsgBox(CType(g, GroupBox).Name)
Dim t As Object
For Each t In g.Controls 'ciclo sulle textbox
If (t.GetType.Name = "TextBox") Then
Dim nome As String
nome = CType(t, TextBox).Name
MsgBox(CType(t, TextBox).Name)
End If
Next
End If
Next
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5