这是一个完整的VS2010项目,用于重现问题:http://temp-share.com/show/dPf3aqi7W
使用字符串设置Scintilla.Net文本框并滚动到最后一行不起作用。
这个Q& How make autoscroll in Scintilla?有答案,但在设置文字的同时它不会。
Bare bones repro:
private void button1_Click(object sender, EventArgs e)
{
string s = RandomString(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();
}
有人知道如何在设置文本后垂直向下滚动到结束行吗?
答案 0 :(得分:1)
你可以尝试在添加文本后放置Refresh();
scintilla1.Text = s +“”+ s +“”+ s +“”+ s +“”+ s;
scintilla1.Refresh();
对于这种情况我发现你需要刷新()两次取决于你放在文本框上的字符串的长度。
答案 1 :(得分:0)
对于最终想知道的人,我放弃了Scintilla,转而支持ICSharpCode.TextEditor。 &lt; - 这个有点不稳定所以我使用了Digitalrune version of the ICsharp.TextEditor
我发现enhancing the ICSharpCode.TextEditor与Scintilla相比微不足道。
ICSharpCode.TextEditor的另一个巨大好处是允许您自定义/构建自己的语法突出显示,例如:https://github.com/icsharpcode/SharpDevelop/wiki/Syntax-highlighting