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条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥15 nginx中的CORS策略应该如何配置
  • ¥30 信号与系统实验:采样定理分析
  • ¥100 我想找人帮我写Python 的股票分析代码,有意请加mathtao
  • ¥20 Vite 打包的 Vue3 组件库,图标无法显示
  • ¥15 php 同步电商平台多个店铺增量订单和订单状态
  • ¥15 关于logstash转发日志时发生的部分内容丢失问题
  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题