C#Winform picutureBox数组的拖动问题

点击一次picutureBox1会动态生成新的picturebox,并存放到数组中,设置了鼠标事件,编译时没报错,但运行时会出现那三个mouse事件的错误类型:未将对象引用设置到对象的实例。求大神!!

public partial class Form1 : Form
{
int i = 0;
public Form1()
{
InitializeComponent();
pictureBox1.Click += new EventHandler(pictureBox1_Click);

        pic[i].MouseDown += new MouseEventHandler(pic_MouseDown);
        pic[i].MouseUp += new MouseEventHandler(pic_MouseUp);
        pic[i].MouseMove += new MouseEventHandler(pic_MouseMove);
    }

    public void pictureBox1_Click(object sender, EventArgs e)
    {
        i++;
        pic[i] = new PictureBox();
        this.pic[i].Location = new System.Drawing.Point(10*i, 20*i);
        this.pic[i].Size = new System.Drawing.Size(100, 50);
        this.pic[i].TabIndex = 1;
        this.pic[i].TabStop = false;
        this.pic[i].AutoScrollOffset = new System.Drawing.Point(500, 500);

        this.pic[i].MouseDown += new MouseEventHandler(pic_MouseDown);
        this.pic[i].MouseUp += new MouseEventHandler(pic_MouseUp);
        this.pic[i].MouseMove += new MouseEventHandler(pic_MouseMove);
        Controls.Add(this.pic[i]);
        this.pic[i].BackColor = System.Drawing.Color.Transparent;
        this.pic[i].SizeMode = PictureBoxSizeMode.Zoom;
        this.pic[i].BorderStyle = BorderStyle.Fixed3D;

    }

        PictureBox[] pic = new PictureBox[15];

        int xPos;
        int yPos;
        bool MoveFlag;

    //在picturebox的鼠标按下事件里.
        private void pic_MouseUp(object sender, MouseEventArgs e)
        {
            MoveFlag = false;
        }

    ////在picturebox鼠标移动
        private void pic_MouseMove(object sender, MouseEventArgs e)
        {
            if (MoveFlag)
            {
                pic[i].Left += Convert.ToInt16(e.X - xPos);//设置x坐标.
                pic[i].Top += Convert.ToInt16(e.Y - yPos);//设置y坐标.

            }
        }
        private void pic_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)//判断你点的是不是左键
            {

                MoveFlag = true;
                xPos = e.X;
                yPos = e.Y;
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
}

http://blog.163.com/lightyue_leyuan/blog/static/7513607720096299102502/
http://www.cnblogs.com/lyl6796910/archive/2012/06/27/2566359.html