首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NullReferenceException未处理#2

NullReferenceException未处理#2
EN

Stack Overflow用户
提问于 2012-04-17 01:27:10
回答 2查看 721关注 0票数 0

我正在关注这个视频:http://www.youtube.com/watch?v=Y63vq_tcTGk,在8:20他输入

代码语言:javascript
复制
    ds.Add(a);
    show_diem();

然而,当我执行ds.Add(A)时出现错误;

我是新手,所以我仍然不确定ds是什么?它能是任何东西吗?他宣称

代码语言:javascript
复制
   ds = new ArrayList();

一开始,它可能是任何东西吗?为什么会弹出这个错误?这是我的Form1上的代码。"Employee“是一个类,"employeeId”、"firstName“等是文本框。我用"em“而不是"ds”。

代码语言:javascript
复制
    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();

            }
        }
    }

错误提示: object reference未设置为对象的实例。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-17 01:34:01

在我看来,你正在编写代码来模仿视频,但是可能已经使用了一个设计器来连接Form1_Load。因此,您需要确保这是连接到您的表单。如果不是,则永远不会调用ArrayList的初始化。

如果你进入设计器,你可以点击表单。然后在“属性”窗口中选择“事件”选项卡。找到OnLoad (或Load,我不确定命名)事件。然后,在下拉列表中,您的方法应该显示为参数定义将匹配。选择这个,设计者就会把它连接起来。

线路应该看起来像这样

代码语言:javascript
复制
form.Load += Form1_Load;

或者,您也可以通过在声明中执行以下操作将其从FormLoad中删除来完成相同的操作:

代码语言:javascript
复制
public ArrayList em = new ArrayList();

最后,您可以在表单构造函数中执行此操作

代码语言:javascript
复制
public Form1()
{
    em = new ArrayList();
    InitializeComponent();
}
票数 2
EN

Stack Overflow用户

发布于 2012-04-17 01:39:06

当em为空时,您正在尝试使用em。解决这个问题的一种方法是:

代码语言:javascript
复制
public Form1() 
{ 
    em = new ArrayList();  
    InitializeComponent(); 
} 

但是,您可能还有另一个问题,那就是Form1_Load事件没有连接起来。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10178759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档