For each ?

Fabia

Grünschnabel
Hallo und guten Abend

Kann mir jemand sagen wie ich auf einer ASP .NET Seite alle Textboxen durch "loopen" kann ? Mit For Each bekomme ich die Fehlermeldung "
Specified cast is not valid."

Code:
For Each txt As TextBox In Me.Controls
txt.text = ""
Next
 
Weil die Controls vom Typ Control in der Collection liegen und du daher

For Each con As Control in ...

verwenden musst. Dann für das Control den Typ abfragen und fertig.
 
Code:
For Each txt As TextBox In Me.Controls
Das geht nicht weil in Me.Controls vermutlich nicht nur Textboxen vorhanden sind. Versuch es so, ich habe das in C# programmiert ich kann VB.NET nur lesen aber nicht schreiben :p:
Code:
foreach(Control c in this.Controls)
{
if(c is Textbox)
{
// do work
}
}

Code nicht getestet, daher ohne Gewähr. :)
 
Code:
			For Each objctl As Control In Me.Controls
			  If objctl = TextBox Then
				objctl.text = ""
			  End If
			Next

so funktionierts aber auch nicht :-( ? wie frage ich den typ ab?
 
Hallo,
du machst es auch nicht richtig. So wie ich es gepostet habe solltest du es nach VB.NET umwandeln, aber da ich nett bin hier versuch das mal:
Code:
For Each c As Control In Me.Controls 
 If TypeOf c Is Textbox Then 
 End If 
Next
 
Danke Counterfeit, du bist ja super nett ;-)

mit deinem Beispiel bekomme ich keine Fehlermeldung mehr, jedoch werden mit diesem Loop nicht alle meine 25 Controls auf der Seite durch geloopt, sondern nur 3 controls. an was kann das liegen ? wieso sind bei mir nur 3 in dieser control "collection" ?
 
Es würde funktionieren wenn ich all meine 25 Controls im Load Event mit

Code:
 Me.Controls.Add(textbox)

hinzufüge. aber gibt es keine bessere Lösung ?

ich erhalte aber dennoch eine Fehlermeldung "Control 'txt1' of type 'TextBox' must be placed inside a form tag with runat=server." ?
 
Zuletzt bearbeitet:
Deine Textbox liegen sicherlich nicht direkt auf der Form, du musst die Controlcollektion des parentobjektes nehmen, also eine groupbox, panel oder ähnliches. entweder direkt

For Each textcontrol In gbox_WE.Controls
If TypeOf textcontrol Is TextBox Then
textcontrol.Text = "*"
End If
Next

oder du musst zum beispiel die form mit me.controls nach goupbox abfragen und dort drinne dann dein textboxen suchen, je nachdem wie verschachtelt deine form ist.

gruß nepal
 
Zurück