Benutzer mit den meisten Antworten
Focus setzen, so dass Eingabe möglich ist

Frage
-
Hallo
Steige gerade von VB6 auf VBnet um. Nun habe ich ein Problem, dass ich nicht lösen kann. Ich möchte den Fokus auf ein Textfeld setzen, so dass eine Eingabe möglich ist. Wie es sich gehört, verwende ich die Focus-Methode:
txtname.focus
VB akzeptiert zwar diese Methode (schlägt sie sogar vor!), aber wenn ich das Programm starte, blinkt kein Cursor. Eine Eingabe wird erst möglich, wenn ich das Textfeld anklicke.
Vielen Dank für Eure Hilfe!
Antworten
-
Hallo kuhno,
eigentlich sollte es mit Focus() funktionieren. Alternativ kannst du auch noch die Methode Select() verwenden.
Gruß
Jan- Als Antwort vorgeschlagen Jan Tittel Montag, 19. Oktober 2009 09:08
- Als Antwort markiert Robert Breitenhofer Montag, 26. Oktober 2009 20:18
-
Setze einfach den TabIndex entsprechend, z.B. so:
Option Infer On Option Strict On Public Class Form1 Private tb1 As New TextBox With {.Dock = DockStyle.Top, .Text = "tb1 ohne Focus", .TabIndex = 3} Private tb2 As New TextBox With {.Dock = DockStyle.Top, .Text = "tb2 mit Focus", .TabIndex = 1} Private tb3 As New TextBox With {.Dock = DockStyle.Top, .Text = "tb3 ohne Focus", .TabIndex = 2} Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Me.Controls.AddRange(New Control() {tb3, tb2, tb1}) End Sub End Class
--
Peter- Als Antwort vorgeschlagen Peter Fleischer Donnerstag, 15. Oktober 2009 08:33
- Als Antwort markiert Robert Breitenhofer Montag, 26. Oktober 2009 20:18
Alle Antworten
-
Hallo kuhno,
eigentlich sollte es mit Focus() funktionieren. Alternativ kannst du auch noch die Methode Select() verwenden.
Gruß
Jan- Als Antwort vorgeschlagen Jan Tittel Montag, 19. Oktober 2009 09:08
- Als Antwort markiert Robert Breitenhofer Montag, 26. Oktober 2009 20:18
-
Hi,
eigentlich ist die Methode die richtige. Ich nehme mal an, du schreibst sie aber in die FormLoad()-Methode? Diese Methode wird aber aufgerufen, direkt nachdem vb die Objekte erzeugt hat. Es führt dann also deine Anweisung aus, den Focus auf txtname zu setzen. Nach dem Ausführen der FormLoad()-Methode werden dann noch ein paar Sachen gemacht, unter anderem, dass der Focus gesetzt wird. Das heißt, vb tut, was du ihm sagst, ändert aber kurze Zeit später den Focus wieder. Du solltest das ganze lieber in die "Shown"-Methode verfrachten, die wird nämlich aufgerufen, nachdem die Form zum ersten Mal gezeigt wurde.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown
txtname.Focus()
End Sub
so ähnlich müsste es dann heißen.
mfg
Imperium_Romanum
MAY THE SOURCE BE WITH YOU!- Als Antwort vorgeschlagen Peter77Lustig Freitag, 12. November 2010 11:19
-
Setze einfach den TabIndex entsprechend, z.B. so:
Option Infer On Option Strict On Public Class Form1 Private tb1 As New TextBox With {.Dock = DockStyle.Top, .Text = "tb1 ohne Focus", .TabIndex = 3} Private tb2 As New TextBox With {.Dock = DockStyle.Top, .Text = "tb2 mit Focus", .TabIndex = 1} Private tb3 As New TextBox With {.Dock = DockStyle.Top, .Text = "tb3 ohne Focus", .TabIndex = 2} Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Me.Controls.AddRange(New Control() {tb3, tb2, tb1}) End Sub End Class
--
Peter- Als Antwort vorgeschlagen Peter Fleischer Donnerstag, 15. Oktober 2009 08:33
- Als Antwort markiert Robert Breitenhofer Montag, 26. Oktober 2009 20:18
-
Hi,
eigentlich ist die Methode die richtige. Ich nehme mal an, du schreibst sie aber in die FormLoad()-Methode? Diese Methode wird aber aufgerufen, direkt nachdem vb die Objekte erzeugt hat. Es führt dann also deine Anweisung aus, den Focus auf txtname zu setzen. Nach dem Ausführen der FormLoad()-Methode werden dann noch ein paar Sachen gemacht, unter anderem, dass der Focus gesetzt wird. Das heißt, vb tut, was du ihm sagst, ändert aber kurze Zeit später den Focus wieder. Du solltest das ganze lieber in die "Shown"-Methode verfrachten, die wird nämlich aufgerufen, nachdem die Form zum ersten Mal gezeigt wurde.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown
txtname.Focus()
End Sub
so ähnlich müsste es dann heißen.
mfg
Imperium_Romanum
MAY THE SOURCE BE WITH YOU!
Das ist die Antwort, die ich (und wahrscheinlich auch kuhno gesucht) habe! Dass Focus() eigentlich richtig ist, war klar, warum es aber im formload nicht ging, war mir nicht klar.Danke