回答
移动结束后触发ResizeEnd事件。也许你可以使用它。
只要在触发移动事件时将标志设置为true即可。如果mouseup事件发生并且该标志为true,则表单停止移动。
我承认这在用户通过键盘移动窗体的情况下可能不起作用,但这很少见。
MouseUp事件是不太可能被解雇因为移动表单通常是使用标题栏完成的,并且鼠标事件不会引发该区域中的鼠标操作。 – 2009-05-31 20:51:59
如果您从标题栏部分移动窗体,mouseup事件不会触发 – Ozzy 2009-05-31 20:54:18
这不是一个故障安全的解决方案,但它是纯粹的.NET,它很简单。将一个计时器添加到您的表单中,将其设置为相对较短的延迟(对我而言,100-150 ms似乎不错)。添加以下代码为Form.LocationChanged和Timer.Tick事件:
private void Form_LocationChanged(object sender, EventArgs e)
{
if (this.Text != "Moving")
{
this.Text = "Moving";
}
tmrStoppedMoving.Start();
}
private void Timer_Tick(object sender, EventArgs e)
{
tmrStoppedMoving.Start();
this.Text = "Stopped";
}
如果您想了解更多详细的处理(什么时候了鼠标按键时释放的标题栏,这样知道),你可能会需要潜水进入监控windows消息。
对于任何想要了解此答案的最后部分(确定何时在移动过程中按下并释放鼠标时)的更多信息,请查看我的问题,进一步深入研究http://stackoverflow.com/questions/24493167/wm-nclbuttonup-message-not-sent-at-the-end-of-dragging-a-form-how-to-do -so – AnotherUser 2014-06-30 16:18:02
我对用户控件有同样的问题,但它没有ResizeEnd事件。解决方案的工作是覆盖WndProc方法并侦听EXITSIZEMOVE。
见例如here
我测试ResizeChanged事件,并能正常工作,但我不知道移动和调整之间的关系,但它为我工作
- 1. 如何停止窗体字段在引导窗体中移动
- 2. C#窗体控件移动
- 3. C#鼠标移动事件,时间循环停止
- 4. 窗体在Windows窗体中移动事件
- 5. touchstart事件停止滚动
- 6. UITextField停止摇动事件?
- 7. 如何停止窗体加载在C#窗体中
- 8. AS3停止移动物体的闪烁
- 9. 如何停止移动物体
- 10. 停止传播键盘事件到父窗体
- 11. 主窗体停止响应
- 12. 停止事件
- 13. C#窗体不会加载,直到OpenGL动画停止工作
- 14. SDL移动停止
- 15. 阻止运行主窗体OnActivate事件
- 16. 如何从窗口移动事件中移动窗口?
- 17. 表单移动时如何停止调整大小事件?
- 18. 移动按钮停止单击事件发生
- 19. 在触摸移动过程中停止触摸事件
- 20. 如何在特定的阶段停止鼠标移动事件
- 21. 如何在C#.Net中移动窗体?
- 22. C# - 使窗体移动时半透明
- 23. 停止ecm.widget.dialog.ConfirmationDialog事件
- 24. 停止kernell32事件
- 25. 停止jquery事件
- 26. 如何在移动物体碰到框架时停止移动物体?
- 27. 从C中的图片框移动窗体窗体#
- 28. C#中断/停止ToolClick事件
- 29. C#插座BeginAccept事件停止射击
- 30. 碳C事件窗口滚动条移动的处理程序
我对此一无所知。刚刚检查,它的工作原理!谢谢 – 2009-05-31 21:26:29
+1 - 我显然花了太多的时间做网络应用程序。 – 2009-05-31 21:28:28
哈哈,不错。非常感谢。 – Ozzy 2009-05-31 21:40:02