c# - 如何防止 ScintillaNET 控件自动滚动?

标签 c# .net winforms scintillanet

我在我的 C# Winforms 应用程序中使用 ScintillaNET 控件。我正在尝试实现一个自动标记功能,例如,当用户键入 <html> 之前,该功能将自动完成标记。 , 自动完成功能将触发并插入 </html> .

我正在使用 ScintillaNET CharAdded此实现的功能:

if (caretPos != 0)
        {
            //If the characters before the caret are "ml>" (last three chars from "<html>")
            if (TextArea.Text[caretPos - 1] == '>' && TextArea.Text[caretPos - 2] == 'l' && TextArea.Text[caretPos - 3] == 'm')
            {
                TextArea.Text = TextArea.Text.Insert(caretPos, "</html>");
                TextArea.SelectionStart = caretPos + 0;
                TextArea.Selections.First();
                TextArea.ScrollCaret();
            }
        }

问题

我的问题是,Scintilla 控件一直向上或向下滚动。我以为ScrollCaret()函数会起作用,但它一直在发生。有任何想法吗?

最佳答案

我也一直在努力解决这个问题。还以为是bug .甚至 Github 问题页面上给出的解决方案也无济于事。但后来我发现,如果您使用以下方法插入文本:

TextArea.Text = TextArea.Text.Insert(caretPos, "");
那么这本身就是问题所在。 ScintillaNET 已经有 Text.Insert 的功能.使用 InsertText将阻止控件滚动。
编辑
发现问题也发出here

关于c# - 如何防止 ScintillaNET 控件自动滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62322680/

相关文章:

c# - 已发布的 ClickOnce 应用程序未出现在“开始”菜单中

c# - Xamarin.iOS 上的 SignalR - 随机无法调用 Hub 方法

c# - SelectedRows.Count 与 Rows.GetRowCount(DataGridViewElementStates.Selected)

c# - 在 C# 中内联使用返回多个值的函数

c# - 调用方法并绘制

c# - 我如何在 visual c# express 中获取表单

c# - StackPanel 中的 TextWrap

c# - 使用 NetworkStream 传输文件

c# - Put 方法不可用(或在帮助中可见)

winforms - Powershell文本框仅读取最后一个元素