Bonjour, cela fait deux jours que je cherche une solution a mon problème ( j'ai passé énormément de temps sur google, et Stackoverflow )
Je vous explique mon problème :
je développe actuellement une appli en WPF C# sous visual studio 2017 (version 15.1), je suis plutot débutant en WPF, mais j'arrive a m'en sortir . J'ai cependant, déjà fait des petites applications en WindowsForms classique.
La routine que je souhaite faire se fait en 2 étapes
Première étape
Je souhaite afficher le contenu d'un fichier de configuration (*.h) dans une Textbox via un invite de sélection de fichier . Cette partie est fonctionnelle , j'ai bien le texte qui s'affiche dans ma TextBox . et je peux scroller sans problème de haut en bas dans la textbox .
Seconde étape
Je souhaite chercher certaines valeurs a l’intérieur de la TextBox et les remplacer par d'autres . par exemple : dans mon fichier j'ai des lignes de commentaires et je souhaite au biais d'une case a cocher, commenter ou dé-commenter une ligne qui contient une chaine de caractère spécifique.
j'ai effectué cette manipulation de cette manière MaTextBox.Text = MaTextBox.Text.Replace("//Ceci est un commentaire","Ceci n'est plus un commentaire");
cela fonctionne aussi très bien, MAIS le curseur de ma textbox reste en haut, et la valeur qui est modifiée n'est pas visible dans la textbox, il faut scroller manuellement pour voir la modification se faire en direct .
je souhaite faire un scroll automatique, pour aligner le curseur (caret) soit en début de ligne où le texte a été modifié, soit en fin de ligne où le texte a été modifié .
J'ai bien activé le curseur avec un MaTextBox.focus(); ce qui initialise le curseur en début de TextBox et je compte utiliser la propriété "TextChanged" de la Textbox pour placer le curseur en fin de texte remplacé, ou utiliser l’événement de case a cocher , cochée ou decochée .
Seulement je ne trouve pas de solutions qui fonctionne ... avez vous une idée ?
j'ai essayé scroll to end pour tester, et le scroll a l'air de fonctionner, mais ça scrolle jusqu'en bas de la textbox ( comme son nom l'indique ScrollToEnd(); )
je ne peux pas utiliser une methode qui consiste a compter les numéros de lignes, parce que les numéros de lignes sont succeptibles de changer .
EDIT : J'ai oublié de préciser que j'ai bien spécifié dans mon XAML que la textbox était réglée pour du scroll vertical avec "ScrollViewer.VerticalScrollBarVisibility="Auto"
Partager