WPF remplacement text

Résolu
benoit57320 Messages postés 16 Date d'inscription mardi 10 mars 2015 Statut Membre Dernière intervention 23 janvier 2016 - 22 janv. 2016 à 16:04
benoit57320 Messages postés 16 Date d'inscription mardi 10 mars 2015 Statut Membre Dernière intervention 23 janvier 2016 - 23 janv. 2016 à 22:09
Bonjour à tous

j'ai un petit problème pour remplacer une "phrase" dans ma richtextbox
enfin ça fonctionne sauf s'il y a des accents
Voila le code

Dim txtRange = New TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd)
Dim rtff As String
Using memoryStream = New MemoryStream()
txtRange4.Save(memoryStream, DataFormats.Rtf)
rtff = ASCIIEncoding.[Default].GetString(memoryStream4.ToArray())
End Using

rtff = rtff.Replace("Météo", "soleil")
Dim mystream As New MemoryStream(ASCIIEncoding.[Default].GetBytes(rtff))
richTextBox1.SelectAll()
richTextBox1.Selection.Load(mystream, DataFormats.Rtf)

5 réponses

Whismeril Messages postés 19021 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 avril 2024 656
Modifié par Whismeril le 23/01/2016 à 07:25
Bonjour,

ça fonctionne sauf s'il y a des accents
et?
  • les mots accentués ne sont pas remplacés?
  • il y a des hiéroglyphes à la place des accents?
  • Autres (exemple, copie d'écran pour comprendre.....)


Je ne me suis jamais servit de richtexbox en WPF, mais cela me parrait bien alambiqué de tout sélectionner, enregistrer dans un stream (sans tenir compte de l'encodage, et ça en général les accents n'aiment pas...), transférer le stream vers string, faire le remplacement et le chemin inverse....

Vu que WPF implique Binding, pourquoi ne pas directement travailler sur la variable bindée, et s'il n'y a pas, qu'attends tu?

Quand j'étais petit, la mer Morte n'était que malade.
George Burns
1
benoit57320 Messages postés 16 Date d'inscription mardi 10 mars 2015 Statut Membre Dernière intervention 23 janvier 2016
23 janv. 2016 à 12:18
Bonjour,

Le code vient d'une source internet donc, je ne comprend pas tout le code.
Après quand j’essaye de remplacer une phrase ou il n'y a pas d'accents pas de problème ça remplace tout en laissant en forme et couleur.
Par contre quand j'essaye de remplacé une phrase ou il y a des accents, il ne remplace rien, il n'y a pas d'erreurs, le programme continue de fonctionné sans problème
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 23/01/2016 à 12:29
Bonjour,
Tu ne peux imaginer à quel point parvient à me désoler, voire carrément à me déprimer :
Le code vient d'une source internet donc, je ne comprend pas tout le code.

surtout l'adverbe "donc" !
Je peux t'assurer de ce qu'il ne me viendra jamais à l'esprit de recopier un code qui échappe à ma compréhension, puis de le compiler, puis de l'exécuter, au risque, de surcroît, de tomber un jour sur un "vicieux" qui profitera de l'ingénuité du copieur/colleur pour lui refiler des petites bébêtes malveillantes.
Enfin ... tu fais ce que tu veux, ma foi, ... mais ... gaffe !
0
Whismeril Messages postés 19021 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 avril 2024 656
23 janv. 2016 à 13:35
Bonjour Uc, remarque fort pertinente.

Benoit, si tu ne comprends pas ce simple code (oui là c'est simple), avant d'aller plus loin il serait peut être judicieux d'apprendre les base de VB.Net
http://plasserre.developpez.com/cours/vb-net/
0
benoit57320 Messages postés 16 Date d'inscription mardi 10 mars 2015 Statut Membre Dernière intervention 23 janvier 2016
23 janv. 2016 à 14:24
Public Function Monproblème(encodage As String)
Dim result As String
Select Case encodage
Case "surtout l'adverbe donc! "
result = "ce code fait 1/100 des lignes de mon programme, on ne peut pas tout connaitre"
Case "Benoit, si tu ne comprends pas ce simple code"
result = "Je me suis arrêter au chapitre 1 comment lancé visual studio"
Case "il serait peut être judicieux d'apprendre les base de VB.Net "
result = "je ne comprent juste pas le memoryStream"
Case "memoryStream"
result = "je vais chercher à comprendre"
Case "Première piste"
result = "C'est l'encodage, l'encodage je vous le dit"
Case "deuxième piste"
result = "J'ai enregistré ma chaine rtff dans un fichier text et j'ai trouver mes ACCENTS"
Case "ACCENTS"
result = "Mon é est devenue \'e9 "
Case "\'e9"
rtff = rtff.Replace("m\'e9t\'e9o", "soleil")
'Ici ça fonctionne
Case "encodage"
Dim message As String 'C'est du UTF8
rftt 'C'est PAS DU UTF8
End Select
Return result
End Function
0
Whismeril Messages postés 19021 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 avril 2024 656
23 janv. 2016 à 14:51
"Je me suis arrêter au chapitre 1 comment lancé visual studio"


C'est bien dommage, tu y aurais découvert que tous les objets ont une propriété ToString() qui retourne un string, pas toujours le texte contenu dans l'objet (contrôle ou pas), mais ça se tente au pire, et que beaucoup de contrôle ont une propriété Text, qui elle quand elle existe, retourne le texte contenu/selectionné.

Bon, ToString, en 3 essais, je voies que ça ne marche pas, .Text n'existe pas sur le RichTextBox, ni Document, mais par contre y est sur le TextRange....

Donc, déjà comme ça
        Dim txtRange = New TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd)
        Dim toto As String = txtRange.Text
Y a déjà plus de memoryStream... ni de se soucier de l'encodage....

Ensuite, en cherchant 2 minutes de plus sur mon moteur de recherche favori, j'ai trouvé plusieurs exemple de binding (la base de WPF, après un programme aussi "gros" déjà écrit, tu le sais n'est-ce pas"), et là même pas besoin de TextRange.

Mais bon, comme tu sembles susceptible, que l'on réponde en fonction de ce que tu nous donnes:
  • Ca marche pas, mais je ne vous dirais pas comment....
  • J'ai copié coller 5 lignes de codes sans chercher à les comprendre...


Et bien en ce qui me concerne, je ne t'en dirais pas plus.
0
benoit57320 Messages postés 16 Date d'inscription mardi 10 mars 2015 Statut Membre Dernière intervention 23 janvier 2016
23 janv. 2016 à 22:05
On fait le gros malin c***** mais pas de vrai réponse a L'ENCODAGE
L'ENCODAGE L'ENCODAGE L'ENCODAGE L'ENCODAGE L'ENCODAGE L'ENCODAGE L'ENCODAGE L'ENCODAGE L'ENCODAGE L'ENCODAGE L'ENCODAGE L'ENCODAGE L'ENCODAGE L'ENCODAGE L'ENCODAGE L'ENCODAGE
0
benoit57320 Messages postés 16 Date d'inscription mardi 10 mars 2015 Statut Membre Dernière intervention 23 janvier 2016
23 janv. 2016 à 22:09
C'est facile de dire mais rajoute .tostring() mais quand ça ne marche pas ça marche pas comme dirait un jeu ma jeunesse essaye encore !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
benoit57320 Messages postés 16 Date d'inscription mardi 10 mars 2015 Statut Membre Dernière intervention 23 janvier 2016
23 janv. 2016 à 18:37
Merci pour cette réponse

Mais l’intérêt d'un rtb est d'avoir un text dans un format Rich Text Format avec des couleurs, du text en gras, ....

Avec ce code donné précédemment

 Dim txtRange = New TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd)
Dim toto As String = txtRange.Text
'txtRange.text = toto


La mise ne forme disparaît donc c'est pas la bonne piste...
0
Rejoignez-nous