控件在拖动后Click事件失效

sorry_rr 2010-11-15 04:31:27
我一个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事件就失效了。怎么解决?
...全文
373 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sorry_rr 2010-11-15
  • 打赏
  • 举报
回复
模拟一个wm_move试下看行不?不懂
whrspsoft3723 2010-11-15
  • 打赏
  • 举报
回复
方法1:用消息,模拟一个wm_move试下看行不?
方法2:事实上不用搞得那么复杂, 拖动时不需要控件随着动,画一个移动的方框就行了,mouse释放时,把buttone移走就行了。
方法3:还有一种方法,就是利用drawdrop 属性,这个你需要查下资料。
倒大霉的上帝 2010-11-15
  • 打赏
  • 举报
回复
sorry_rr 2010-11-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 colorall 的回复:]
按下抬起不配对,混乱导致
[/Quote]
该怎么解决
afp0613 2010-11-15
  • 打赏
  • 举报
回复
我也遇见过,没有找到好的解决办法,重新注册吧,或者等待高手来解决!
colorall 2010-11-15
  • 打赏
  • 举报
回复
按下抬起不配对,混乱导致
pcqpzq 2010-11-15
  • 打赏
  • 举报
回复
private void button_MouseMove(object sender, MouseEventArgs e)
{
if (mouseDown)
{
panel.DoDragDrop((Panel)(((Button)sender).Parent), DragDropEffects.Move);
}
mouseDown = false;
}

这里的mouseDown = false;出问题了
sorry_rr 2010-11-15
  • 打赏
  • 举报
回复
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);
}
这样做好不好?好像有时可以有时有不行
sorry_rr 2010-11-15
  • 打赏
  • 举报
回复
好像是哦。那该怎么办?
sorry_rr 2010-11-15
  • 打赏
  • 举报
回复
恩。先试试
兔子-顾问 2010-11-15
  • 打赏
  • 举报
回复
可能是你破坏了click过程。正常是先按下,弹起,结果只有按下没弹起。不知道是不是这样。没实际测试。你仔细弄断点看状态。
sorry_rr 2010-11-15
  • 打赏
  • 举报
回复
怎么解决?急~~~
sorry_rr 2010-11-15
  • 打赏
  • 举报
回复
不是其他窗体。就是在一个FlowLayoutPanel内拖动
兔子-顾问 2010-11-15
  • 打赏
  • 举报
回复
拖动后?
控件拖到其他窗体上事件需要重新注册。
属性编辑器选择小闪电标志。找到事件。重新选中。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧