问题描述
- 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
时间: 2024-09-19 09:48:10