2013-02-08 30 views
1

我试图从一些功能访问主程序列表personal但我不断收到这不是实例的实例...列表为空,即使我做了类

类代码:

[Serializable()] 
class FaktNr 
{ 
    public int lopnummer; 
    public int year; 

    public List<string> personal = new List<string>(); 

    public FaktNr() 
    { 
     personal = new List<string>(); 

    } 
} 

形式代码:

public partial class Form1 : Form 
{ 

    internal FaktNr faktNr = new FaktNr(); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void laggTillPerson_Click(object sender, EventArgs e) 
    { 
      faktNr.personal.Add(ComboBox1.Text); 
    } 

代码是在这里缩短,但它显示的要领。空引用不存在于函数laggTillPerson_Click中。

我想补充说,它不是组合框的问题,因为我已经试过这个: faktNr.personal.Add(“uhiouh”);

+2

你有没有跑在调试模式下你的代码检查什么一片空白? – Larry 2013-02-08 12:19:40

+1

也许它是nok'FaktNr',但是'ComboBox1'是空的 – 2013-02-08 12:25:15

+0

这是所有的形式吗?是否有可能将'faktNr'实例替换为代码中其他位置的另一个反序列化对象? – 2013-02-08 12:57:21

回答

1

你所得到的例外上ComboBox1.Text,你ComboBox1可能为空,而不是你的列表personal,试着用替换代码:

faktNr.personal.Add("test string"); 

,看看你是否仍然可以例外。

您正在访问ComboBox的Text财产,而是你可以使用ComboBox.SelectedText Property

或者你可以在你的事件检查空:

private void laggTillPerson_Click(object sender, EventArgs e) 
{ 
    if(ComboBox1 != null) 
          faktNr.personal.Add(ComboBox1.Text); 
} 
+0

为什么测试Text属性不是null?将'null'添加到字符串列表不会抛出任何异常。 – ken2k 2013-02-08 12:39:33

+0

@ ken2k,我的意思是检查'ComboBox1'为空:),更新我的回答 – Habib 2013-02-08 12:41:15

+0

没有多数民众赞成(不幸)不是问题。我应该包括,我已经试过这个: – user2054229 2013-02-08 13:31:46

相关问题