不大可能实现吧,你如果用down的事件来做,那你始终会有up起来的时候,那么就会激活按钮的事件了,那就是拖动一次,就运行一次

解决方案 »

  1.   

    当然可以了,down的时候你把按钮的位置设成鼠标的位置不就行了。
      

  2.   

    利用鼠标跟随吧,在按钮的onMouse_Down事件中,动态改变按钮的location
      

  3.   

    private Point mousePos;
    private void Btn1_MouseDown(object sender,System.Windows.Forms.MouseEventArgs e)
    {
        this.canMove =true;
        this.mousePos =new Point(e.X,e.Y);
    }private void Btn1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
        if (this.canMove)
        {
    Btn1.Location =new Point(Btn1.Location.X-mousePos.X+e.X,Btn1.Location.Y -mousePos.Y+e.Y);
         }
    }private void Btn1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
    {
        this.canMove =false;
    }
      

  4.   

    在form里面好处理,如果要把这个按纽封装起来就要麻烦一点了