J'ajoute une nouvelle ligne de journaux à un objet WinForms TextBox, ce qui entraîne le défilement de la zone de texte vers le bas. Comment puis-je empêcher cela et conserver ma position actuelle? (un extrait de code court aiderait)Empêche le défilement d'une zone de texte lors de l'ajout de texte
Répondre
SelectionStart n'a pas fait ce que je voulais, pour une raison quelconque. Il a été réinitialisé à 0. J'ai trouvé this post qui répond à ce que je voulais (qui était d'utiliser une zone de texte comme un journal). La réponse est TextBox.AppendText()
En fait, AppendText() ne fera pas ce que vous voulez (essayez d'ajouter plus de texte et à un moment donné tout va mal tourné)
La réponse se trouve en fait dans l'API Win32 , et heureusement pour nous, un collègue SO utilisateur a déjà mis en œuvre ce comportement parfaitement: Auto-scrolling text box uses more memory than expected
En C#, vous pouvez essayer <yourTextBox>.Text += "your new text";
au lieu de <yourTextBox>.AppendText("your new text");
.
La réponse correcte et facile à la question posée est la propriété SelectedText
(lecture/écriture). Vous pouvez lui attribuer du texte et ce texte apparaîtra à la position du curseur sans nécessairement faire défiler la zone de texte. Vous pouvez utiliser SelectionStart
avant de déplacer le curseur au bon endroit.