Zone de texte Scintilla à défilement vertical pendant l’événement de texte modifié

Voici un projet complet VS2010 pour reproduire le problème: http://temp-share.com/show/dPf3aqi7W

La définition d’une zone de texte Scintilla.Net avec une chaîne et le défilement jusqu’à la dernière ligne ne fonctionnent pas.

Ce Q & R Comment faire autoscroll dans Scintilla? a la réponse, mais cela ne fonctionnera pas en même temps que la définition du texte .

Os nus repro:

private void button1_Click(object sender, EventArgs e) { ssortingng s = RandomSsortingng(400); scintilla1.Text = s + " " + s + " " + s + " " + s + " " + s; scintilla1.Scrolling.ScrollBy(0, 10000); //<-doesn't work (but does work eg in a Button2_click) } private static Random random = new Random((int)DateTime.Now.Ticks); private string RandomString(int size) { StringBuilder builder = new StringBuilder(); char ch; for (int i = 0; i < size; i++) { ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))); builder.Append(ch); } return builder.ToString(); } 

Est-ce que quelqu’un sait comment faire défiler verticalement pour terminer la ligne après la définition du texte?

Eh bien, vous pouvez essayer de mettre Refresh () après avoir ajouté le texte;

scintilla1.Text = s + “” + s + “” + s + “” + s + “” + s;
scintilla1.Refresh ();

dans ce cas, j’ai découvert que vous aurez besoin de Refresh () à deux resockets, cela dépend de la longueur de la chaîne que vous mettez dans la zone de texte.

Pour ceux qui se demandent, j’ai finalement abandonné Scintilla en faveur de ICSharpCode.TextEditor . <- Celui-ci était un peu instable, j'ai donc utilisé la version Digitalrune de ICsharp.TextEditor

J’ai trouvé que l’ amélioration de ICSharpCode.TextEditor était sortingviale par rapport à Scintilla.

ICSharpCode.TextEditor présente un autre avantage considérable: il vous permet de personnaliser / créer votre propre surbrillance de syntaxe, par exemple: https://github.com/icsharpcode/SharpDevelop/wiki/Syntax-highlighting