在文本更改事件期间垂直滚动闪烁文本框
本文关键字:文本 垂直 滚动 闪烁 事件 | 更新日期: 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