0

使用字符串设置 Scintilla.Net 文本框并滚动到最后一行不起作用。

本问答如何在 Scintilla 中进行自动滚动?有答案,但它不会与设置文本同时工作工作。

裸骨再现:

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();
}

有谁知道设置文本后如何垂直向下滚动到结束行?

4

2 回答 2

1

好吧,您可以尝试在添加文本后放置 Refresh() ;

scintilla1.Text = s + " " + s + " " + s + " " + s + " " + s;
闪烁1.刷新();

对于这种情况,我发现您需要 Refresh() 两次,具体取决于您放在文本框中的字符串的长度。

于 2013-04-30T03:05:59.533 回答
0

对于任何想知道最后我放弃 Scintilla 转而支持ICSharpCode.TextEditor的人。<- 这个有点不稳定,所以我使用了ICsharp.TextEditor 的Digitalrune 版本

我发现与 Scintilla 相比,增强 ICSharpCode.TextEditor是微不足道的。

ICSharpCode.TextEditor 的另一个巨大好处是允许您自定义/构建自己的语法突出显示,例如:https ://github.com/icharpcode/SharpDevelop/wiki/Syntax-highlighting

于 2013-04-30T03:18:57.967 回答