Проблема со сборкой и использованием Scintilla.NET - PullRequest
1 голос
/ 09 апреля 2011

Я использую / build Scintilla.NET и переключил проект на .NET 2.0 для проблем совместимости.

Это работает, но когда я нажимаю кнопку новой вкладки, я получаю сообщение об ошибке:

Ссылка на объект не установлена ​​на экземпляр объекта.

Проблема возникает в этом коде:

ScintillaNet.Scintilla currentScin;
Stream Stream1;

public List <ScintillaNet.Scintilla> ScinList;

//Code for various events

private void New_Click(object sender, EventArgs e)
{
    TabPage tabp = new TabPage();
    ScintillaNet.Scintilla scin = new ScintillaNet.Scintilla();
    scin.Dock = DockStyle.Fill;

    scin.Margins[0].Width = 20;
    scin.ConfigurationManager.CustomLocation = "My Styles";
    scin.ConfigurationManager.Language = "lua";

    scin.Parent = tabp;

    // This line throws "Object reference not set to an instance of an object."
    ScinList.Add(scin);

    tabControl1.TabPages.Add(tabp);
}

Ответы [ 3 ]

4 голосов
/ 09 апреля 2011

Проблема в том, что вы не инициализировали ScinList. Поля класса инициализируются значением по умолчанию, которое в данном случае равно null.

Вам нужно инициализировать его где-нибудь, либо там, где оно объявлено ...

public List<ScintillaNet.Scintilla> ScinList = new List<ScintillaNet.Scintilla>();

... или в конструкторе ...

public CLASSNAMEHERE()
{
    ScinList = new List<ScintillaNet.Scintilla>();
}

Если эта строка действительно появляется в вашем коде, отредактируйте ваш вопрос с помощью кода, который делает это.

2 голосов
/ 09 апреля 2011

Похоже, вы определили свое публичное поле ScinList:

public List <ScintillaNet.Scintilla> ScinList;

, но вы никогда не создаете новый список и не присваиваете его полю:

public List <ScintillaNet.Scintilla> ScinList = new List<ScintillaNet.Scintilla>();
2 голосов
/ 09 апреля 2011

Проблема в том, что вы не инициализируете ScinList.

Изменить это:

public List<ScintillaNet.Scintilla> ScinList;

К этому:

public List<ScintillaNet.Scintilla> ScinList = new List<ScintillaNet.Scintilla>();
...