2009-02-11 7 views
2

J'ai mon propre contrôle TextBox personnalisé, qui hérite de System.Windows.Forms.TextBox. J'ai surchargé la méthode OnKeyDown, car je veux sélectionner le contrôle précédent ou suivant si l'utilisateur appuie sur les touches haut ou bas.Ligne actuelle dans une zone de texte multiligne

Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs) 

    MyBase.OnKeyDown(e) 

    If e.KeyCode = Keys.Up Then 
     If Not Multiline Then 
      Me.FindForm().SelectNextControl(Me, False, True, True, True) 
     Else 
      'TODO: If the current line is the first one, select the previous control 
     End If 
    ElseIf e.KeyCode = Keys.Down Then 
     If Not Multiline Then 
      Me.FindForm().SelectNextControl(Me, True, True, True, True) 
     Else 
      'TODO: If the current line is the last one, select the next control 
     End If 
    End If 

End Sub 

Dans une zone de texte multiligne, quelle est la meilleure façon de savoir si je suis dans la première ou la dernière ligne?

Merci beaucoup

+0

De même, assurez-vous de gérer le trait de touche afin de ne pas appliquer deux fois les réglages e.Handled = True pour les flèches haut et bas. –

Répondre

3

Il est dur, mais il faut faire le travail.

If Me.Text.IndexOf(Environment.NewLine, 0, Me.SelectionStart) = -1 Then 
     'no new lines before 
    End If 

    If Me.Text.IndexOf(Environment.NewLine, SelectionStart) = -1 Then 
     'no new lines after 
    End If 
Questions connexes