2015-05-24 3 views
1

Я пытаюсь создать простой редактор Python с помощью ScintillaNET и теперь пытаюсь вернуть вход. У меня есть класс PythonScriptView:Как читать текстовое свойство класса ScintillaNET

public class PythonScriptView : Scintilla 
{ 
    // setup python syntax highlighting 
} 

и Form, который состоит из PythonScriptView компонента и кнопку OK. Внутри этого класса я хочу построить функцию, которая отображает форму и возвращает свойство Text моего PythonScriptView. Я сделал это для другого маленького диалогового окна, которое используется текстовым поле как поле ввода и теперь пытается то же самое с редактором 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?

Edit:

Похоже, я не могу получить доступ любые свойства или методы из этого класса

+0

Почему downvote? Неужели это такой глупый вопрос? Я даже пробовал буквально то, что он говорит в [docs] (https://github.com/jacobslusser/ScintillaNET#retrieve-text): 'var text = scintilla.GetTextRange (0, Math.Min (256, scintilla.TextLength)), что вызывает одно и то же исключение. –

ответ

2

У меня был тот же самый вопрос, и кажется, что из-за пути ScintillaNET работ вы не в состоянии для доступа к любым свойствам после того, как элемент удален, до закрытия формы. Я нашел работу, добавив следующее событие и свойство в свою форму.

private void FormClosing(object sender, FormClosingEventArgs e) 
{ 
    CachedText = scintilla.Text; 
} 

public string CachedText { get; private set; } 
+0

Благодарим за помощь! В конце концов, я также узнал, что это как-то связано с формой и нашел аналогичное обходное решение с обработчиком событий. Не такой чистый и общий, как ваш, хотя :) –