NullReferenceException was unhandled #2
本文关键字:unhandled was NullReferenceException | 更新日期: 2023-09-27 18:31:13
我正在关注这个视频:http://www.youtube.com/watch?v=Y63vq_tcTGk,在8:20他输入
ds.Add(a);
show_diem();
但是当我做 ds 时会出现错误。添加(a);
我是新手,所以我仍然不确定 ds 是什么?能是什么吗?他宣称
ds = new ArrayList();
一开始,它能是什么吗?为什么会弹出错误?这是我的 Form1 上的代码。"员工"是一个类,"员工ID"名字"等是文本框。我用"em"而不是"ds"。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace Employee_Program
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public ArrayList em;
private void Form1_Load(object sender, EventArgs e)
{
em = new ArrayList();
}
private void show_employee()
{
listView1.Items.Clear();
foreach(Employee a in em)
{
int i = listView1.Items.Count;
listView1.Items.Add(a.FirstName);
listView1.Items[i].SubItems.Add(a.LastName);
listView1.Items[i].SubItems.Add(a.EmployeeId.ToString());
listView1.Items[i].SubItems.Add(a.YearSalary.ToString());
}
}
private void button1_Click(object sender, EventArgs e)
{
Employee a = new Employee();
a.FirstName = firstName.Text;
a.LastName = lastName.Text;
a.EmployeeId = float.Parse(employeeId.Text);
a.YearSalary = float.Parse(yearSalary.Text);
em.Add(a);
show_employee();
}
}
}
错误显示:对象引用未设置为对象的实例。
在我看来
,您正在编写代码来模仿视频,但是可能已经使用设计器来连接Form1_Load
。因此,您需要确保它已连接到您的表单。如果不是,则永远不会调用ArrayList
的初始化。
如果您进入设计器,则可以单击"窗体"。然后在"属性"窗口中,选择"事件"选项卡。找到OnLoad
(或Load
我不确定命名)事件。然后在下拉列表中,您的方法应显示为参数定义将匹配。选择这个,设计师会把它连接起来。
接线应如下所示
form.Load += Form1_Load;
或者,您可以通过在声明中执行此操作将其从 FormLoad 中删除来完成相同的操作:
public ArrayList em = new ArrayList();
最后,您可以在窗体构造函数中执行此操作''
public Form1()
{
em = new ArrayList();
InitializeComponent();
}
当 em 为 null 时,您正在尝试使用 em。修复它的一种方法是:
public Form1()
{
em = new ArrayList();
InitializeComponent();
}
但是,您可能有另一个问题,即Form1_Load事件未连接。