C#使用void函数时出现空引用异常

C#使用void函数时出现空引用异常,c#,listview,C#,Listview,我肯定我这里出了点问题,但我的团队中没有人能解释这是什么。我的目标是能够从另一个表单中的按钮单击填充listView项,但是将变量传递到form1时会引发空引用异常(System.NullReferenceException:“对象引用未设置为对象的实例”。) 这是我的代码:Form1: AddRec addRec = new AddRec(); public AddRec AddRec { get; set; } public static string viewIte

我肯定我这里出了点问题,但我的团队中没有人能解释这是什么。我的目标是能够从另一个表单中的按钮单击填充listView项,但是将变量传递到form1时会引发空引用异常(System.NullReferenceException:“对象引用未设置为对象的实例”。)

这是我的代码:Form1:

    AddRec addRec = new AddRec();
    public AddRec AddRec { get; set; }
    public static string viewItem1, viewItem2, viewItem3 = "";

    public void YesClick()
    {
        ListViewItem lvi = new ListViewItem(viewItem1);
        lvi.SubItems.Add(viewItem2);
        lvi.SubItems.Add(viewItem3);
        listView1.Items.Add(lvi);
    }
表格2(AddRec):


其思想是AddRec上的add按钮用AddRec中文本框中的文本填充Form1中的listView。在Form1上引发异常。YesClick()

您不能这样调用Form1。在填充或更改其属性之前,需要调用“opened Form1”。试试这个:

Form1 frm = Application.OpenForms.OfType<Form1>().Take(1).FirstOrDefault();
if (frm != null)
{
  //Populate all your properties here:
  frm.viewItem1 = name;
}
Form1 frm=Application.OpenForms.OfType().Take(1.FirstOrDefault();
如果(frm!=null)
{
//在此处填充您的所有属性:
frm.viewItem1=名称;
}

您不能那样调用Form1。在填充或更改其属性之前,需要调用“opened Form1”。试试这个:

Form1 frm = Application.OpenForms.OfType<Form1>().Take(1).FirstOrDefault();
if (frm != null)
{
  //Populate all your properties here:
  frm.viewItem1 = name;
}
Form1 frm=Application.OpenForms.OfType().Take(1.FirstOrDefault();
如果(frm!=null)
{
//在此处填充您的所有属性:
frm.viewItem1=名称;
}

好吧,
yeslick()
不是一个静态方法,需要
Form1
对象引用<代码>视图项1等是静态的,并且随类内存一起提供。因此,要回答这个问题,只需将
YesClick()
设置为静态,它就会工作。您的代码不太清楚,但是,
ListViewItem
有一个
Subitems
集合检查,如果它为空,而不是直接添加到它中(
lvi.Subitems.Add(viewItem2);
)更改YesClick()function to static使函数无法读取listView1,因此无法添加到listview。非常感谢任何其他信息:)好的,
yeslick()
不是静态方法,需要
Form1
对象引用<代码>视图项1等是静态的,并且随类内存一起提供。因此,要回答这个问题,只需将
YesClick()
设置为静态,它就会工作。您的代码不太清楚,但是,
ListViewItem
有一个
Subitems
集合检查,如果它为空,而不是直接添加到它中(
lvi.Subitems.Add(viewItem2);
)更改YesClick()function to static使函数无法读取listView1,因此无法添加到listview。非常感谢您提供任何其他信息:)在本例中您是否使用了库?“我的IDE”无法识别关键字应用程序是否使用WinForm?请确保您使用的是:使用System.Windows.Forms;我正在使用这个库,但是将您的代码复制粘贴到我的项目中,“应用程序”仍然无法识别。我更正了我的代码。现在应该可以了。在这个示例中,您是否使用了一个库?“我的IDE”无法识别关键字应用程序是否使用WinForm?请确保您使用的是:使用System.Windows.Forms;我正在使用这个库,但是将您的代码复制粘贴到我的项目中,“应用程序”仍然无法识别。我更正了我的代码。现在应该可以了。