Ecriture synchronisée entre une Textbox et une Richtextbox [Résolu]

Yule35240 - 19 avril 2016 à 21:17 - Dernière réponse :  Yule35240
- 19 avril 2016 à 22:33
Bonsoir,

Etant débutant en vb.net, j'essaie de synchroniser l'écriture entre une Textbox et une Richtextbox en utilisant le code suivant :

<code basic><code>
 Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar = Convert.ToChar(97) Then RichTextBox1.Text = RichTextBox1.Text & "a"
        If e.KeyChar = Convert.ToChar(98) Then RichTextBox1.Text = RichTextBox1.Text & "b"
        If e.KeyChar = Convert.ToChar(99) Then RichTextBox1.Text = RichTextBox1.Text & "c"
        If e.KeyChar = Convert.ToChar(100) Then RichTextBox1.Text = RichTextBox1.Text & "d"
        If e.KeyChar = Convert.ToChar(101) Then RichTextBox1.Text = RichTextBox1.Text & "e"
        If e.KeyChar = Convert.ToChar(102) Then RichTextBox1.Text = RichTextBox1.Text & "f"
        If e.KeyChar = Convert.ToChar(103) Then RichTextBox1.Text = RichTextBox1.Text & "g"
        If e.KeyChar = Convert.ToChar(104) Then RichTextBox1.Text = RichTextBox1.Text & "h"
        If e.KeyChar = Convert.ToChar(105) Then RichTextBox1.Text = RichTextBox1.Text & "i"
        If e.KeyChar = Convert.ToChar(106) Then RichTextBox1.Text = RichTextBox1.Text & "j"
        If e.KeyChar = Convert.ToChar(107) Then RichTextBox1.Text = RichTextBox1.Text & "k"
        If e.KeyChar = Convert.ToChar(108) Then RichTextBox1.Text = RichTextBox1.Text & "l"
        If e.KeyChar = Convert.ToChar(109) Then RichTextBox1.Text = RichTextBox1.Text & "m"
        If e.KeyChar = Convert.ToChar(110) Then RichTextBox1.Text = RichTextBox1.Text & "n"
        If e.KeyChar = Convert.ToChar(111) Then RichTextBox1.Text = RichTextBox1.Text & "o"
        If e.KeyChar = Convert.ToChar(112) Then RichTextBox1.Text = RichTextBox1.Text & "p"
        If e.KeyChar = Convert.ToChar(113) Then RichTextBox1.Text = RichTextBox1.Text & "q"
        If e.KeyChar = Convert.ToChar(114) Then RichTextBox1.Text = RichTextBox1.Text & "r"
        If e.KeyChar = Convert.ToChar(115) Then RichTextBox1.Text = RichTextBox1.Text & "s"
        If e.KeyChar = Convert.ToChar(116) Then RichTextBox1.Text = RichTextBox1.Text & "t"
        If e.KeyChar = Convert.ToChar(117) Then RichTextBox1.Text = RichTextBox1.Text & "u"
        If e.KeyChar = Convert.ToChar(118) Then RichTextBox1.Text = RichTextBox1.Text & "v"
        If e.KeyChar = Convert.ToChar(119) Then RichTextBox1.Text = RichTextBox1.Text & "w"
        If e.KeyChar = Convert.ToChar(120) Then RichTextBox1.Text = RichTextBox1.Text & "x"
        If e.KeyChar = Convert.ToChar(121) Then RichTextBox1.Text = RichTextBox1.Text & "y"
        If e.KeyChar = Convert.ToChar(122) Then RichTextBox1.Text = RichTextBox1.Text & "z"

        If e.KeyChar = Convert.ToChar(8) Then
            RichTextBox1.Select()
            If RichTextBox1.TextLength > 0 Then RichTextBox1.SelectionStart = RichTextBox1.TextLength
            SendKeys.Send("{BKSP}")
        End If
    End Sub
<code basic>
</code></code>

La méthode que j'utilise fonctionne mais n'est sûrement pas optimisée et surtout elle est lourde!

Je vous remercie d'avance
Afficher la suite 

4 réponses

Répondre au sujet
NHenry 14005 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 15 décembre 2017 Dernière intervention - 19 avril 2016 à 22:02
0
Utile
1
L'idéal serait de savoir dans quel but tu as besoin de ça, car tel que tu as fais, si le curseur de la textbox n'est pas à la fin, mais au milieu du texte, le résultat ne sera plus le bon.
De plis, si l'uitilisateur tape "!" par exemple, tu auras une désynchronisation.
Bonsoir NHenry et merci de m'avoir répondu.

Le but de mon projet est de pouvoir écrire dans ma Richtextbox à partir de ma Textbox qui elle utilise une écriture intuitive plus ou moins(celle-ci contient l'ensemble des mots français), le fichier s'appelle Dico.txt):

Option Explicit On
Option Strict On
Imports System.IO
Imports System

Public Class Form1

Dim lst As New List(Of String)
Dim MySource As New AutoCompleteStringCollection()

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim Chemin As String = My.Application.Info.DirectoryPath & "Dico.txt"
Dim Mot() As String = File.ReadAllLines(Chemin)
Dim NombreDeLigne = Mot.Length
For L = 0 To NombreDeLigne - 1
lst.Add(Mot(L))
Next
MySource.AddRange(lst.ToArray)
TextBox1.AutoCompleteCustomSource = MySource
TextBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
End Sub
Private Sub RichTextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles RichTextBox1.KeyPress
If e.KeyChar = Convert.ToChar(97) Then TextBox1.Text = TextBox1.Text & "a"
If e.KeyChar = Convert.ToChar(98) Then TextBox1.Text = TextBox1.Text & "b"
If e.KeyChar = Convert.ToChar(99) Then TextBox1.Text = TextBox1.Text & "c"
If e.KeyChar = Convert.ToChar(100) Then TextBox1.Text = TextBox1.Text & "d"
If e.KeyChar = Convert.ToChar(101) Then TextBox1.Text = TextBox1.Text & "e"
If e.KeyChar = Convert.ToChar(102) Then TextBox1.Text = TextBox1.Text & "f"
If e.KeyChar = Convert.ToChar(103) Then TextBox1.Text = TextBox1.Text & "g"
If e.KeyChar = Convert.ToChar(104) Then TextBox1.Text = TextBox1.Text & "h"
If e.KeyChar = Convert.ToChar(105) Then TextBox1.Text = TextBox1.Text & "i"
If e.KeyChar = Convert.ToChar(106) Then TextBox1.Text = TextBox1.Text & "j"
If e.KeyChar = Convert.ToChar(107) Then TextBox1.Text = TextBox1.Text & "k"
If e.KeyChar = Convert.ToChar(108) Then TextBox1.Text = TextBox1.Text & "l"
If e.KeyChar = Convert.ToChar(109) Then TextBox1.Text = TextBox1.Text & "m"
If e.KeyChar = Convert.ToChar(110) Then TextBox1.Text = TextBox1.Text & "n"
If e.KeyChar = Convert.ToChar(111) Then TextBox1.Text = TextBox1.Text & "o"
If e.KeyChar = Convert.ToChar(112) Then TextBox1.Text = TextBox1.Text & "p"
If e.KeyChar = Convert.ToChar(113) Then TextBox1.Text = TextBox1.Text & "q"
If e.KeyChar = Convert.ToChar(114) Then TextBox1.Text = TextBox1.Text & "r"
If e.KeyChar = Convert.ToChar(115) Then TextBox1.Text = TextBox1.Text & "s"
If e.KeyChar = Convert.ToChar(116) Then TextBox1.Text = TextBox1.Text & "t"
If e.KeyChar = Convert.ToChar(117) Then TextBox1.Text = TextBox1.Text & "u"
If e.KeyChar = Convert.ToChar(118) Then TextBox1.Text = TextBox1.Text & "v"
If e.KeyChar = Convert.ToChar(119) Then TextBox1.Text = TextBox1.Text & "w"
If e.KeyChar = Convert.ToChar(120) Then TextBox1.Text = TextBox1.Text & "x"
If e.KeyChar = Convert.ToChar(121) Then TextBox1.Text = TextBox1.Text & "y"
If e.KeyChar = Convert.ToChar(122) Then TextBox1.Text = TextBox1.Text & "z"
End Sub
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
If e.KeyChar = Convert.ToChar(97) Then RichTextBox1.AppendText("a")
If e.KeyChar = Convert.ToChar(98) Then RichTextBox1.AppendText("b")
If e.KeyChar = Convert.ToChar(99) Then RichTextBox1.AppendText("c")
If e.KeyChar = Convert.ToChar(100) Then RichTextBox1.AppendText("d")
If e.KeyChar = Convert.ToChar(101) Then RichTextBox1.AppendText("e")
If e.KeyChar = Convert.ToChar(102) Then RichTextBox1.AppendText("f")
If e.KeyChar = Convert.ToChar(103) Then RichTextBox1.AppendText("g")
If e.KeyChar = Convert.ToChar(104) Then RichTextBox1.AppendText("h")
If e.KeyChar = Convert.ToChar(105) Then RichTextBox1.AppendText("i")
If e.KeyChar = Convert.ToChar(106) Then RichTextBox1.AppendText("j")
If e.KeyChar = Convert.ToChar(107) Then RichTextBox1.AppendText("k")
If e.KeyChar = Convert.ToChar(108) Then RichTextBox1.AppendText("l")
If e.KeyChar = Convert.ToChar(109) Then RichTextBox1.AppendText("m")
If e.KeyChar = Convert.ToChar(110) Then RichTextBox1.AppendText("n")
If e.KeyChar = Convert.ToChar(111) Then RichTextBox1.AppendText("o")
If e.KeyChar = Convert.ToChar(112) Then RichTextBox1.AppendText("p")
If e.KeyChar = Convert.ToChar(113) Then RichTextBox1.AppendText("q")
If e.KeyChar = Convert.ToChar(114) Then RichTextBox1.AppendText("r")
If e.KeyChar = Convert.ToChar(115) Then RichTextBox1.AppendText("s")
If e.KeyChar = Convert.ToChar(116) Then RichTextBox1.AppendText("t")
If e.KeyChar = Convert.ToChar(117) Then RichTextBox1.AppendText("u")
If e.KeyChar = Convert.ToChar(118) Then RichTextBox1.AppendText("v")
If e.KeyChar = Convert.ToChar(119) Then RichTextBox1.AppendText("w")
If e.KeyChar = Convert.ToChar(120) Then RichTextBox1.AppendText("x")
If e.KeyChar = Convert.ToChar(121) Then RichTextBox1.AppendText("y")
If e.KeyChar = Convert.ToChar(122) Then RichTextBox1.AppendText("z")
End Sub
End Class

L'idéal bien sur serait de faire l'inverse, de plus je suis loin d'avoir répertorié l'ensemble des touches.
J'espère avoir été un peu plus clair dans mes explications et encore merci de m'accordé de votre temps
Commenter la réponse de NHenry
NHenry 14005 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 15 décembre 2017 Dernière intervention - Modifié par NHenry le 19/04/2016 à 22:19
0
Utile
1
D'accord, pourquoi ne pas faire (pour un sens, je te laisse chercher pour l'autre) :

(Tapé hors éditeur)
.. Sub Textbox_Change(...) 'Ou TextChange, je ne sais plus
    RichTextBox1.Text=TextBox1.Text
    RichTextBox1.SelStart=TextBox1.SelStart 'Ou SelectionStart, pareil, je l'utilise trop rarement
    RichTextBox1.SelLength=TextBox1.SelLength
End Sub



J'interviens principalement en VB6 et VB.NET, avec un peu de C#, mais la modération m'amène souvent sur d'autre langages.
En VB.NET pensez à activer "Option Explicit" et "Option Strict"
Merci beaucoup,

Ceci fonctionne très bien:

  Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
RichTextBox1.Text = TextBox1.Text
RichTextBox1.SelectionStart = TextBox1.SelectionStart
RichTextBox1.SelectionLength = TextBox1.SelectionLength
End Sub


Encore merci et passez une très bonne soirée
Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.