fxzx907yf 2015-03-21 04:20 采纳率: 0%
浏览 1591

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)
        {

        }
}
  • 写回答

1条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能