我一个Button添加了下面几个事件public void button_MouseDown(object sender, MouseEventArgs e)
  {
    mouseDown = true; 
  }private void button_MouseMove(object sender, MouseEventArgs e)
 {
    if (mouseDown)
     {
         panel.DoDragDrop((Panel)(((Button)sender).Parent), DragDropEffects.Move);
     }
            mouseDown = false;
  }private void button_MouseUp(object sender, MouseEventArgs e)
  {
            mouseDown = false;
  }
 private void button_Click(object sender, EventArgs e)
  {
     txb = (TextBox)((Button)sender).Tag;
     Form2 fm = new Form2(txb);
     fm.ShowDialog();
  }是不是DoDragDrop、mousedown、mouseup这几个事件有冲突啊?我一开始运行时点击button没问题(可以弹出窗口)
可是拖动按钮后Click事件就失效了。怎么解决?

解决方案 »

  1.   

    不是其他窗体。就是在一个FlowLayoutPanel内拖动
      

  2.   

    可能是你破坏了click过程。正常是先按下,弹起,结果只有按下没弹起。不知道是不是这样。没实际测试。你仔细弄断点看状态。
      

  3.   

    public void button_MouseDown(object sender, MouseEventArgs e)
      {
      mouseDown = true;  
     button = (Button)sender;
      }private void button_MouseMove(object sender, MouseEventArgs e)
     {
      if (mouseDown)
      {
      panel.DoDragDrop((Panel)(((Button)sender).Parent), DragDropEffects.Move);
      }
      mouseDown = false;
      }private void button_MouseUp(object sender, MouseEventArgs e)
      {
      mouseDown = false;
     button.MouseMove += new System.Windows.Forms.MouseEventHandle (this.button_MouseMove);
      } private void DragDrop(object sender, DragEventArgs e)
      {
        endflp.Controls.Add((Panel)e.Data.GetData("System.Windows.Forms.Panel"));
        button.MouseMove -= new System.Windows.Forms.MouseEventHandler(this.button_MouseMove);
            }
    这样做好不好?好像有时可以有时有不行
      

  4.   

    private void button_MouseMove(object sender, MouseEventArgs e)
     {
      if (mouseDown)
      {
      panel.DoDragDrop((Panel)(((Button)sender).Parent), DragDropEffects.Move);
      }
      mouseDown = false;
      }这里的mouseDown = false;出问题了
      

  5.   

    方法1:用消息,模拟一个wm_move试下看行不?
    方法2:事实上不用搞得那么复杂, 拖动时不需要控件随着动,画一个移动的方框就行了,mouse释放时,把buttone移走就行了。
    方法3:还有一种方法,就是利用drawdrop 属性,这个你需要查下资料。
      

  6.   

    模拟一个wm_move试下看行不?不懂