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

时间:2017-10-13 09:34:21

标签: c# listview

我确信我在这里遇到了一些问题,但我的团队中没有人可以解释它是什么。我的目标是能够从另一个窗体中的按钮单击填充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);
    }

Form2(AddRec):

    private void btnAdd_Click(object sender, EventArgs e)
    {
        name = txtNameF.Text.ToLower() + " " + txtNameS.Text.ToLower();
        if (name != "")
        {
            num = txtNum.Text;
            mobileNum = txtModNo.Text;

            Form1.viewItem1 = name;
            Form1.viewItem2 = num;
            Form1.viewItem3 = mobileNum;
            Form1.YesClick();

            txtNameF.Text = "";
            txtNameS.Text = "";
            txtNum.Text = "";
            txtModNo.Text = "";
        }
        else
        {
            MessageBox.Show("Fields Required", "Warning");
        }
    }

想法是AddRec上的添加按钮使用AddRec中文本框中的文本填充Form1中的listView。 Form1.YesClick()

抛出异常

1 个答案:

答案 0 :(得分:0)

您无法像这样调用Form1。在填充或更改其属性之前,您需要调用"打开的Form1" 。试试这个:

Form1 frm = Application.OpenForms.OfType<Form1>().Take(1).FirstOrDefault();
if (frm != null)
{
  //Populate all your properties here:
  frm.viewItem1 = name;
}