per Enter-Taste Textfelder springen, focus

bonke-online

Grünschnabel
Hallo Ihr Kenner,
Kann mir jemand helfen, wie ich im .NET die Trab-Reihenfolge mit der Return (Enter) Taste aktiviere?
Am Besten währe eine Anweisung für alle Formulare gültig da mit der. Focus Eigenschaft der Programmieraufwand hoch wird.
Vielen Dank :(
 
du kannst mit hilfe von "addhandler" alle "keypress"-ereignisse (oder wie auch immer du das prüfst) einer prozedur zuordnen. wenn bis morgennachmittag noch niemand ein bsp. gemacht hat mach ich dir eins, aber im mom bin ich zu müde ^^
 
Code:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        AddHandler TextBox1.KeyPress, AddressOf Eventhandler
        AddHandler TextBox2.KeyPress, AddressOf Eventhandler
        AddHandler TextBox3.KeyPress, AddressOf Eventhandler
    End Sub

    Sub Eventhandler(ByVal sender As Object, ByVal e As Windows.Forms.KeyPressEventArgs)
        'irgendwelche befehle
    End Sub

bei dem Code da oben wird jetzt jedesmal wenn eine Taste in einer der Textboxen gedrückt wird die selbe Prozedur gestartet. Auf das Objekt greifst du über die Variable "sender". Wenn ich das richtig verstanden habe was du vorhast, dann würde ich ne Abfrage einbauen, welche kontrolliert ob die Entertaste gedrückt wurde:

Code:
if e.keychar = "13" then...

Um den gewünschten Tabulatoreffekt zu erzielen könnte man (ich hab es nich probiert ich weiß nich ob es geht) dann den Befehl geben:
Code:
sender.text += chr(hier jetzt das ASCII-Zeichen für den Horizontalen Tabulator)

Leider weiß ich jetz nich welches ASCII-Zeichen dieses ist. Ich hoffe mal das hilft dir etwas weiter.

mfg ¥Ð
 
Das hab' ich zufällig gerade heute programmiert :) - So sieht mein Code aus:
Code:
 Private Sub FrmForm1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    	' Tastenbehandlung auf Formularebene (Bedingung: Me.KeyPreview = True)
    
    	If  e.KeyCode = Keys.Enter AndAlso Not (e.Shift OrElse e.Control OrElse e.Alt) _
    	  AndAlso TypeOf Me.ActiveControl Is TextBox Then
    	  ' Mit ENTER zum nächsten Control springen, aber nur, wenn es eine Textbox ist
    	  Dim myBox As TextBox = CType(Me.ActiveControl, TextBox)
    	  If Not myBox.Multiline Then
    		' Aber doch nicht, wenn es eine Multiline-Textbox ist
    		Me.ActiveControl = Me.GetNextControl(Me.ActiveControl, True)
    		e.Handled = True
    	  End If
    	ElseIf e.KeyCode = Keys.Enter AndAlso e.Shift AndAlso Not (e.Control OrElse e.Alt) _
    		  AndAlso TypeOf Me.ActiveControl Is TextBox _
    		  AndAlso TypeOf Me.GetNextControl(Me.ActiveControl, False) Is TextBox Then
    	  ' Mit Shift+ENTER zum vorherigen Control springen, 
    	  ' aber nur, wenn es eine Textbox ist
    	  ' und wenn das vorherige Element auch eine Textbox ist
    		Me.ActiveControl = Me.GetNextControl(Me.ActiveControl, False)
    		e.Handled = True
    	End If
      End Sub
(Müßte selbsterklärend sein, da kommentiert)
Für mich war wichtig, daß zusätzliche, nicht gewünschte, aber trotzdem vom User betätigte Steuertasten, nicht trotzdem zum Auslösen der Funktion führen. Außerdem macht es IMHO keinen Sinn, von einer Multiline-Textbox per Enter weg zu springen.

Durch die gesamte Behandlung in der Key-Down-Methode des Formulars, ist an keiner anderen Stelle weiterer Code erforderlich.
 

Neue Beiträge

Zurück