vb Textbox automatisch erzeugen

Golox

Cadet 4th Year
Registriert
Jan. 2007
Beiträge
114
Hallo,
kann mir jemand sagen, wie ich automatisch ne neue Textbox erscheinen lassen kann?
Ich meine das so:
Auf der Form befindet sich z.B. eine Textbox mit dem Namen txtFach1. Sobald der User etwas in die Textbox eingibt, soll eine neue Textbox mit einem bestimmten Namen erscheinen( z.B. Fach2, die nächste soll dann txtFach3 heißen usw.), in die der User dann wieder etwas eingeben kann
Vielen Dank für Eure Hilfe im vorraus=)
Mit freundlichen Grüßen Golox
 
Mit Steuerelementfeldern. Eins muss vorhanden sein.
Dann kannst du zur Laufzeit auch eins mit
Code:
Load Objektname(index)
hinzufügen. Für den Index am besten
Code:
Objektname.UBound
benutzen, um den größten Wert zu ermitteln...

gruß
bassti


PS: Ich denke, damit währe dir bei deiner zweiten Frage hier im Forum auch geholfen.
 
Du könntest auch die anderen Textfelder Mit txtWieauchimmer.Visible = False verstecken und bei Bedarf mit ... = True wieder erscheinen lassen. Aber bassti hat ja auch schon einen Lösungsansatz geliefert, der je nach Anwendung auch praktischer ist..suchs dir aus.

mfg Backslash

PS: um zu erkennen wann ein User etwas eingibt das TextChanged Event benutzen.
 
Zuletzt bearbeitet:
Also danke erstmal für die Antworten.
zu bassti:
Angenommen meine Textbox heißt txtLehrer. Wie verwirkliche ich das dann in deinem Code?
Deine angewendeter Code sieht bei mir zur Zeit so aus:

Private Sub txtaLehrer_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtaLehrer.TextChanged

Load(txtLehrer(txtLehrer.UBound))

End Sub

Mit freundlichen Grüßen Golox
 
Also ich hab jetzt nochmal nen anderen Code versucht:
Mein Code sieht momentan so aus:

Private Sub frmVertretungsplan_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

If txtabwesenderLehrer1.Text <> "" Then
For i = 1 To 100
If aL(i).text <> "" Then
newtxt.Location = New Point(12, 99 + i * 12)
Me.Controls.Add(newtxt)
newtxt.Name = aL(i + 1)
'add(aL(i + 1))
End If
Next i
End If
End Sub

Nun sollte eigentlich nach der Eingabe in das schon vorhande Textfeld (txtabwesenderLehrer1) ein neues Textfeld mit dem Namen "txtabwesenderLehrer2" erscheinen. Wenn ich dann in dieses Feld was eingebe, sollte dann noch ein textfeld mit dem Namen "txtabwesenderLehrer3" erscheinen und immer so weiter. Leider klappt mein Code nicht. Es wird noch nicht mal ne neue Textbox hinzugefügt, wenn ich in die schon vorhandene Textbox etwas schreibe?! Kann mir jemand sagen warum?

Mit freundlichen Grüßen Golox
 
Du hast den Code ja in das Load Ereignis geschrieben. Du brauchst allerdings wie ich schon sagte das TextChanged Event.
Load wird nur einmal beim Laden des Forms ausgeführt und da ist ja noch keine Eingabe im Textfeld vorhanden.

mfg Backslash
 
Bei textbox_change ist allerdings darauf zu achten, dass er dann bei jeder Änderung auch ein neues Steuerelementfeld erstellt. Das soll er ja nur machen, wenn man das erste mal in das Textfeld etwas eingibt. Also nur wenn das Feld zuvor leer war.

Dazu sollte man noch sagen, dass gewisse Werte wie Top, Left und Visiable 0 bzw FALSE gesetzt sind. Also muss du sie auch zur Laufzeit dann passend schieben...
 
Hallo,
danke für die Antworten.
Gibt's da nicht ne andere Möglichkeit, sodass während der ganzen Laufzeit überprüft wird ob in dem schon erstellten Feld, oder in den dann noch zu erstellenden Feldern etwas eingegeben wird? Irgendwie muss es da doch ne Möglichkeit geben.

Mit freundlichen Grüßen Golox

Edit: ich hab mir auch schon überlegt, ob der User nicht einfach ENTER drücken sollte und dadurch ein neues Feld entstehen lässt? Dann müsste ich aber wieder die Anzahl der schon vorhandenen Textboxen haben, damit ich die Textboxen mit fortlaufenden Zahlen benennen kann. Außerdem müsste ich dem Benutzer, dann deutlich machen, dass er die ENTER-Taste drücken muss, wenn er ein neues Textfeld haben möchte, wobei dies ja noch eines der leichteren Dinge wäre^^
 
Zuletzt bearbeitet:
Die Enter-Methode wäre wohl die beste Möglichkeit, wenn du kein eigen Button erstelen willst.

KeyPress/AsciiKey = 13 wäre das dann glaub ich.


Klar kannst du alle Felder überprüfen, wenn du Steuerelementfelder hast. Aber eine komplette Musterlösung kann ich dir nicht bieten....
 
Zurück
Oben