点击一次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)
{
}
}