2011-04-08 88 views
1

我正在使用/構建Scintilla.NET並將項目切換到.NET 2.0以解決兼容性問題。構建和使用Scintilla.NET的問題

它的工作原理,但是當我點擊新標籤頁按鈕,我得到它說的錯誤:

對象引用未設置到對象的 實例。

的問題發生在這個代碼:

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

回答

4

問題是你還沒有初始化ScinList。類的字段被初始化爲它們的默認值,在這種情況下是null

你需要的地方初始化它,無論是在聲明...

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

...或...構造

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

如果該行實際上並出現在你的代碼,請用這樣的代碼編輯你的問題。

2

的問題是你沒有初始化ScinList

更改此:

public List<ScintillaNet.Scintilla> ScinList; 

要這樣:

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

我沒意識到你必須初始化列表..我想不出爲什麼我沒有。謝謝 – 2011-04-08 23:15:14

2

看起來你定義的公共領域ScinList:

public List <ScintillaNet.Scintilla> ScinList; 

,但你從來沒有真正建立一個新的列表,並分配它到您的領域:

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