如何读取 ScintillaNET 类的 Text 属性

Posted

技术标签:

【中文标题】如何读取 ScintillaNET 类的 Text 属性【英文标题】:How to read Text property of ScintillaNET class 【发布时间】:2015-05-24 23:39:09 【问题描述】:

我正在尝试使用 ScintillaNET 构建一个简单的 Python 编辑器,现在正在尝试返回输入。 我有一堂课PythonScriptView:

public class PythonScriptView : Scintilla

    // setup python syntax highlighting

还有一个Form,它由一个PythonScriptView 组件和一个确定按钮组成。在这个类中,我想构建一个函数来显示表单并返回我的PythonScriptView 的 Text 属性。我为另一个使用文本框作为输入字段的小对话框窗口执行了此操作,现在正在尝试使用 scintilla 编辑器进行相同操作:

    public string GetUserInput()
    
        ShowDialog();
        return ScriptView.Text; // ScriptView is of Type PythonScriptView
    

当我运行应用程序时,我收到以下错误消息:

An unhandled exception of type 'System.AccessViolationException' occurred in ScintillaNET.dll

有谁知道如何解决这个问题?我还能如何阅读 Text 属性?

编辑:

好像我无法从这个类访问任何属性或方法

【问题讨论】:

为什么要投反对票?这真的是一个愚蠢的问题吗?我什至尝试了它在docs:var text = scintilla.GetTextRange(0, Math.Min(256, scintilla.TextLength)); 中所说的字面意思,它引发了同样的异常。 【参考方案1】:

我遇到了同样的问题,并且由于 ScintillaNET 的工作方式,一旦元素被处理,您将无法访问任何属性以关闭表单。我通过将以下事件和属性添加到我的表单中找到了解决方法。

private void FormClosing(object sender, FormClosingEventArgs e)

    CachedText = scintilla.Text;


public string CachedText  get; private set; 

【讨论】:

感谢您的帮助!最终,我还发现它与表单有关,并使用事件处理程序找到了类似的解决方法。不过不像你的那么干净和通用:)

以上是关于如何读取 ScintillaNET 类的 Text 属性的主要内容,如果未能解决你的问题,请参考以下文章

如何将光标移动到 ScintillaNet 控件中特定行的特定位置?

ScintillaNET 中的缩进和智能缩进

scintillaNET 编辑器中的链接可能性

从 ScintillaNet 打印内容时打印行号

VB.NET 中的 ScintillaNET 问题

ScintillaNet - 无法将其添加到工具箱