0

私はこのビデオをフォローしていました:http ://www.youtube.com/watch?v= Y63vq_tcTGkそして8:20に彼はタイプします

    ds.Add(a);
    show_diem();

ただし、ds.Add(a)を実行するとエラーが発生します。

私はこれに慣れていないので、dsが何であるかまだわかりませんか?何でもいいですか?彼は宣言します

   ds = new ArrayList();

最初はそれで何かできますか?そして、なぜエラーがポップアップするのですか?これが私のForm1のコードです。「Employee」はクラスで、「employeeId」、「firstName」などはテキストボックスです。「ds」の代わりに「em」を使用しました。

    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();

            }
        }
    }

エラーは次のようになります。オブジェクト参照がオブジェクトのインスタンスに設定されていません。

4

2 に答える 2

2

あなたがビデオを模倣するコードを書いているように私には見えますが、デザイナーが配線に使用された可能性がありますForm1_Load。したがって、これがフォームに接続されていることを確認する必要があります。そうでない場合、の初期化はArrayList呼び出されません。

デザイナーに入ると、フォームをクリックできます。次に、[プロパティ]ウィンドウで、[イベント]タブを選択します。OnLoad(またはLoad名前がわからない)イベントを見つけます。次に、ドロップダウンに、パラメータ定義が一致するようにメソッドが表示されます。これを選択すると、設計者がこれを配線します。

配線は次のようになります

form.Load += Form1_Load;

または、宣言でこれを行うことにより、FormLoadから削除することで同じことを実現できます。

public ArrayList em = new ArrayList();

最後に、フォームコンストラクターでこれを行うことができます\

public Form1()
{
    em = new ArrayList();
    InitializeComponent();
}
于 2012-04-16T17:34:01.030 に答える
1

nullの場合はemを使用しようとしています。これを修正する1つの方法は次のとおりです。

public Form1() 
{ 
    em = new ArrayList();  
    InitializeComponent(); 
} 

ただし、Form1_Loadイベントが接続されていないという別の問題が発生する可能性があります。

于 2012-04-16T17:39:05.633 に答える