none
Tabulation dans un RichTextBox RRS feed

  • Question

  • Bonjour a tous,

    Je n'arrive pas contrôler la touche TAB dans un RichTextBox.

    Voici mon code actuel

    Private Sub Rch_Txt_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs)

          If e.KeyCode = Keys.Tab Then

                Rch_Txt.SelectionIndent = 15

                Rch_Txt.SelectionHangingIndent = 15

                Rch_Txt.Focus()

          End If

    End Sub

     

     

    A l'aide SVP

     

    Cordialiement

     

    Salva


    lundi 6 juin 2011 07:42

Réponses

  • Par ailleurs, le contrôle possède une propriété AcceptTab (à false par défaut ) pour pouvoir saisir une tabulation dans la Richtextbox. Vous pouvez le passer à true si besoin.

    Sinon vous pouvez également surcharger ProcessCmdKey sur votre formulaire, pour gérer comme vous le souhaitez la touche tab quelque soit le contrôle possédant le focus.

    Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, keyData As System.Windows.Forms.Keys) As Boolean
    
        If keyData = Keys.Tab Then
          'mon code custom
    
          Return True
    
        End If
    
        Return MyBase.ProcessCmdKey(msg, keyData)
    End Function
    

    Cordialement
    lundi 6 juin 2011 13:39
    Modérateur
  • Bonjour,

    J'ai testé

     Private Sub RichTextBox1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles RichTextBox1.KeyDown
      If e.KeyCode = Keys.Tab Then
       RichTextBox1.SelectionIndent = 15
       RichTextBox1.SelectionHangingIndent = 15
      End If
     End Sub
    


    Et notez bien que j'ai mis la propriété AcceptsTab du contrôle RichTextBox à True comme déjà indiqué par Nikho et cela me semble ok. Ou si vous voulez juste que la touche ait l'effet habituel, inutile de mettre du code (AcceptsTab suffit). Je ne suis pas sûr que le code original avec SelectionIndent/SelectionHangingIndent soit vraiment ce que vous vouliez faire, j'ai plutôt l'impression que c'était un essai pour tenter de simuler la frappe de la touche Tab ?

    En complément le problème est que la touche Tab permet normalement de passer d'un contrôle à l'autre. Les contrôles  autorisant la saisie de texte ont donc une propriété AcceptsTab permettant d'indiquer que l'on veut que cette touche soit prise en compte par le contrôle de saisie plutôt que comme navigation dans les contrôles.

     

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    samedi 11 juin 2011 19:20
    Modérateur

Toutes les réponses

  • Bonjour,

    que se passe t-il exactement ? lorsque vous déboguer vous ne passez pas dans cet évènement ?

    Y aurait il un autre contrôle qui trappe la touche Tab ?

    Cordialement

    lundi 6 juin 2011 08:57
    Modérateur
  • Bonjour,

    Rch_Txt ajoute des "blancs" pour la tabulation, ensuite il pert le focus.

    donc plus possible de refaire une tabulation sans placer le focus dans Rch_Txt manuellement.

    Cordialement

    Salva

    lundi 6 juin 2011 09:22
  • Bonjour Salva,

    Par défaut chaque contrôle a un TabIndex, ce qui permet de donner le focus au contrôle suivant selon son index.

    Essayez de mettre la propriété TabStop de tous les autres contrôles à True.

    Bonne journée.


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards.
    lundi 6 juin 2011 13:03
  • Par ailleurs, le contrôle possède une propriété AcceptTab (à false par défaut ) pour pouvoir saisir une tabulation dans la Richtextbox. Vous pouvez le passer à true si besoin.

    Sinon vous pouvez également surcharger ProcessCmdKey sur votre formulaire, pour gérer comme vous le souhaitez la touche tab quelque soit le contrôle possédant le focus.

    Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, keyData As System.Windows.Forms.Keys) As Boolean
    
        If keyData = Keys.Tab Then
          'mon code custom
    
          Return True
    
        End If
    
        Return MyBase.ProcessCmdKey(msg, keyData)
    End Function
    

    Cordialement
    lundi 6 juin 2011 13:39
    Modérateur
  • Bonjour,

     

    Merci de vos réponses.

    Je vais applique ca.

     

    A bientôt

     

    Cordialement

     

    Salva

     

    mardi 7 juin 2011 10:32
  • Bonjour, Salva56,

    Est-ce que vous avez testé la solution proposée ? Merci pour partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

     

    Cordialement,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    jeudi 9 juin 2011 06:39
  • Bonjour,

    Oui, j'ai tester la solution proposee.

    Mais ca ne marche pas !!!!! snifffffffff

    Corialement

    Salva

    samedi 11 juin 2011 06:37
  • Bonjour,

    J'ai testé

     Private Sub RichTextBox1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles RichTextBox1.KeyDown
      If e.KeyCode = Keys.Tab Then
       RichTextBox1.SelectionIndent = 15
       RichTextBox1.SelectionHangingIndent = 15
      End If
     End Sub
    


    Et notez bien que j'ai mis la propriété AcceptsTab du contrôle RichTextBox à True comme déjà indiqué par Nikho et cela me semble ok. Ou si vous voulez juste que la touche ait l'effet habituel, inutile de mettre du code (AcceptsTab suffit). Je ne suis pas sûr que le code original avec SelectionIndent/SelectionHangingIndent soit vraiment ce que vous vouliez faire, j'ai plutôt l'impression que c'était un essai pour tenter de simuler la frappe de la touche Tab ?

    En complément le problème est que la touche Tab permet normalement de passer d'un contrôle à l'autre. Les contrôles  autorisant la saisie de texte ont donc une propriété AcceptsTab permettant d'indiquer que l'on veut que cette touche soit prise en compte par le contrôle de saisie plutôt que comme navigation dans les contrôles.

     

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    samedi 11 juin 2011 19:20
    Modérateur
  • Bonjour,

    Merci pour la reponse.

    Cordialement

    Salva

    mercredi 15 juin 2011 08:25