在文本更改事件期间垂直滚动闪烁文本框

本文关键字:文本 垂直 滚动 闪烁 事件 | 更新日期: 2023-09-27 18:10:20

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

这个Q &A如何在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();
}

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

在文本更改事件期间垂直滚动闪烁文本框

你可以尝试在添加文本后添加Refresh();

scintilla1。文本= s + " " + + " " +年代+ " " + + " " +年代;

scintilla1.Refresh ();

在这种情况下,我发现你需要刷新()两次,这取决于你放在文本框上的字符串的长度

最后我放弃了Scintilla,转而使用ICSharpCode.TextEditor。<-这个有点不稳定,所以我使用了ICsharp的Digitalrune版本。TextEditor

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

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