i的值什么时候改变?
你在操作时最好定义好数组I(或是计算出I的值)然后在操作

解决方案 »

  1.   

    to: zhanghw20030303(冰山一角) ,xum1983(夜枭) 
    我省略了前面的代码,现加上
    private int x0,y0,x=-1,y,i=0,k;
    private Bitmap bmp;
    private PictureBox[] ptb=new PictureBox[20];
      

  2.   

    是字符溢出的问题吧,我把i=i+1;加到this.ptb[i] = new PictureBox();之前就不出错了,但是,我只能移动最后一个PictureBox,我知道SendMessage(this.ptb[i].Handle,WM_SYSCOMMAND,SC_MOVE+HTCAPTION, 0);
    肯定有问题,因为i赋值后固定,怎么办
      

  3.   

    ptb_MouseDown方法中的i 定义在哪里?
      

  4.   

    最好是在Form1_MouseUp中判断当前的PictureBox的索引然后在进行操作
      

  5.   

    to:  zhanghw20030303(冰山一角) ,其实我应该在 ptb_MouseDown中判断PictureBox的索引,最土的方法是判断鼠标位置,但是很麻烦
      

  6.   

    你的i定义在外面;在private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)中最后执行 i+1
    数组已经越界了
      

  7.   

    在SendMessage(this.ptb[i].Handle,WM_SYSCOMMAND,SC_MOVE+HTCAPTION, 0); }
    中的this.ptb[i]当然是一个空值
    所以抛出空引用异常
      

  8.   

    TO:xum1983(夜枭) 请看三楼的问题
      

  9.   

    To:wsjdx(猫)可能我没有表述清楚,你每次执行this.ptb[i] = new PictureBox();之后执行i+1;
    问题就出在这里之后在SendMessage(this.ptb[i].Handle,WM_SYSCOMMAND,SC_MOVE+HTCAPTION, 0);
    中的this.ptb[i]是不会有值的你可以改成this.ptb[i-1].....
      

  10.   

    TO:xum1983(夜枭),我已经调通了,和你说的方法一样,只是在ptb_MouseDown事件中我不知道当前鼠标在哪个控件上,因为按我原来的做法,我只能移动最后加上的一个控件
      

  11.   

    我认为你可以在控件中设置一个属性 selected 用来标志那一个被选中
      

  12.   

    还有就是在PictureBox控件外面包一层UserControl,在里面重写鼠标事件
      

  13.   

    TO:xum1983(夜枭) ,有一种方法是得到鼠标当前位置控件,这样的话就容易做了,只是我还没有调通
      

  14.   

    TO:xum1983(夜枭)
    家里没上网,如果你上的话,这两天麻烦你顶顶
      

  15.   

    To:wsjdx(猫)
    得到当前位置控件?如何实现的?