顺便说一句!我做了一个test程序用来测试鼠标位置的页面,屏幕,设备坐标以及光标坐标的程序!
竟然发现我的光标坐标和屏幕坐标不是同样的值!!!
使我的操作系统的bug?
抑或是.net framework 的bug?
抑或是vs.net的bug?
抑或是我的bug?

解决方案 »

  1.   

    关于闪烁的问题,你在处理MouseMove的时候不应用Refresh(),因为改变Location的时候系统自动实现了重画
      

  2.   

    to Tigatron(Zeratul)
    去掉refresh也一样闪!!
    你自己try一try!
      

  3.   

    private void panel1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
                if(e.Button==MouseButtons.Left) {
                    canMove=true;
                    savePoint.X=e.X;
                    savePoint.Y=e.Y;
                }
            }        private void panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) {
                if(canMove==true) {
                    panel1.Location=new Point(panel1.Left+ e.X-savePoint.X,panel1.Top+e.Y-savePoint.Y);
                }
            }        private void panel1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) {
                if(e.Button==MouseButtons.Left) {
                    canMove=false;
                }
            }
    注意:你的MouseMove事件写错了,下次自己做错了,不要说别人有bug
      

  4.   

    to tansm(一个老想发财的家伙) 
    真的是我太糊涂,太感谢了!太感谢了!
      

  5.   

    private Point mouse_offset;private void panel1_MouseDown(object sender,System.Windows.Forms.MouseEventArgs e)
    {
          mouse_offset = new Point(-e.X,-e.Y);
    }private void panel1_MouseMove(object sender,System.Windows.Forms.MouseEventArgs e)
    {
       if (e.Button == MouseButtons.Left)
       {
          Point mousePos = Control.MousePosition;
          mousePos.Offset(mouse_offset.X, mouse_offset.Y);
          panel1.Location = panel1.Parent.PointToClient(mousePos);
       }
    }这样也可以的,简洁明了