Tip: ENTER-toets in plaats van de TAB-toets. [VB2003][VB2005]
Ronneke - 22 Oct 2006 - 01:19
Om van een textbox naar de volgende te gaan, wordt in de meeste gevallen gebruik gemaakt van de TAB-toets. Echter is het soms aangenamer of vlotter te werken door de ENTER-toets te gebruiken.
Deze methode kan nog verder uitgebreid worden om de op- en neerwaartse pijlen te onderscheppen.
Let op: Deze coden werken enkel alleen indien de eigenschap AcceptButton = (none), zoniet wordt de routine OnKeyUp nooit aangesproken.
Bij het formulier waar uw textboxen aanwezig zijn, plaatst je de eigenschap KeyPreview = True Nu zijn er twee mogelijke toestanden:
Code:
1) Op uw formulier zijn er enkel textboxen aanwezig waarbij de eigenschap MultiLine = False is.
Protected Overrides Sub OnKeyUp(ByVal e As System.Windows.Forms.KeyEventArgs)
If e.KeyCode = Keys.Enter Then e.Handled = True Me.ProcessTabKey(Not e.Shift) Else e.Handled = False MyBase.OnKeyUp(e) End If
End Sub
2) Op uw formulier bevinden zich ook textbosen waarbij cde eigenschape MultiLine = True en AcceptsReturn = True. Hier moeten we dus een aanpassing in onze routine aanbrengen, zoniet wordt de ENTER-toets niet meer aanvaard om een nieuwe lijn te starten. Uiteraard kan men dan maar deze textboxen verlaten via de TAB-toets.
Protected Overrides Sub OnKeyUp(ByVal e As System.Windows.Forms.KeyEventArgs)
If e.KeyCode = Keys.Enter Then If TypeOf Me.ActiveControl Is TextBox Then Dim txtBox As TextBox = DirectCast(Me.ActiveControl, TextBox)
If txtBox.Multiline AndAlso txtBox.AcceptsReturn Then e.Handled = False MyBase.OnKeyUp(e) Exit Sub End If End If
e.Handled = True Me.ProcessTabKey(Not e.Shift) Else e.Handled = False MyBase.OnKeyUp(e) End If
End Sub
Om nu van de vervevelende BEEP verlost te zijn, wat eigenlijk duidt op een foutieve invoering, plaatst ge de volgende code bij het KeyPress-event van uw object, bijv.
Private Sub txtBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtBox1.KeyPress
If e.KeyChar = Convert.ToChar(Keys.Enter) Then e.Handled = True End If