构建和使用Scintilla.NET的问题

本文关键字:NET 问题 Scintilla 构建 | 更新日期: 2023-09-27 17:49:25

我正在使用/构建Scintilla。.NET,并因为兼容性问题切换到。NET 2.0。

它工作,但当我点击新的选项卡按钮,我得到一个错误,说:

对象引用未设置为an对象的实例。

问题出现在以下代码中:

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);
}

构建和使用Scintilla.NET的问题

问题是您还没有初始化ScinList。类的字段初始化为默认值,在本例中为null

你需要在某处初始化它,要么在声明它的地方…

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

…或者在构造函数中…

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

如果这一行确实出现在你的代码中,请用这样的代码编辑你的问题

问题是您没有初始化ScinList

改变:

public List<ScintillaNet.Scintilla> ScinList;

:

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

看起来你定义了你的公共字段ScinList:

public List <ScintillaNet.Scintilla> ScinList;

,但你从来没有真正创建一个新的列表,并将其分配给你的字段:

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