WPF remplacement text [Résolu]

Messages postés
16
Date d'inscription
mardi 10 mars 2015
Dernière intervention
23 janvier 2016
- - Dernière réponse : benoit57320
Messages postés
16
Date d'inscription
mardi 10 mars 2015
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)
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
12363
Date d'inscription
mardi 11 mars 2003
Dernière intervention
9 décembre 2018
1
Merci
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

Merci Whismeril 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de Whismeril
Messages postés
16
Date d'inscription
mardi 10 mars 2015
Dernière intervention
23 janvier 2016
0
Merci
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
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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 !
Whismeril
Messages postés
12363
Date d'inscription
mardi 11 mars 2003
Dernière intervention
9 décembre 2018
-
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/
Commenter la réponse de benoit57320
Messages postés
16
Date d'inscription
mardi 10 mars 2015
Dernière intervention
23 janvier 2016
0
Merci
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
Commenter la réponse de benoit57320
Messages postés
12363
Date d'inscription
mardi 11 mars 2003
Dernière intervention
9 décembre 2018
0
Merci
"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.
benoit57320
Messages postés
16
Date d'inscription
mardi 10 mars 2015
Dernière intervention
23 janvier 2016
-
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
benoit57320
Messages postés
16
Date d'inscription
mardi 10 mars 2015
Dernière intervention
23 janvier 2016
-
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 !
Commenter la réponse de Whismeril
Messages postés
16
Date d'inscription
mardi 10 mars 2015
Dernière intervention
23 janvier 2016
0
Merci
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...
Commenter la réponse de benoit57320

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.