没有Window_LocationChanged()的C#WPF DragMove

时间:2010-10-19 10:35:25

标签: c# wpf window drag

我在Windows Forms中实现了类似于DragMove的东西,但边界设置为主屏幕边距的10个单位。

切换到WPF时,我发现this thread对于获得相同的结果非常有用。

然而,由于这是一个移动后事件,所以会发生如果我的窗口被拖到我设置的边界之外,它会“跳回”。我想避免这种效果,因为它看起来很糟糕。

是否有一种简单的方法可以避免在不使用LocationChanged事件的情况下将窗口移动到给定区域之外?我基本上想要在发生之前限制窗口的移动。

1 个答案:

答案 0 :(得分:2)

使用WPF很难实现这些功能,因为它不会暴露基本的Win32函数和WinForms之类的事件。我有一个项目,我需要调整窗口大小,我必须使用PInvoke SetWindowPos以正常方式执行此操作。

AddHook可能对您有所帮助,但这仍然非常困难。有关详细信息,请参阅http://www.wpfmentor.com/2009/01/how-to-get-hwnd-and-hook-into-wndproc.htmlhttp://msdn.microsoft.com/en-us/library/system.windows.interop.hwndsource.addhook.aspx