我在Windows Forms中实现了类似于DragMove的东西,但边界设置为主屏幕边距的10个单位。
切换到WPF时,我发现this thread对于获得相同的结果非常有用。
然而,由于这是一个移动后事件,所以会发生如果我的窗口被拖到我设置的边界之外,它会“跳回”。我想避免这种效果,因为它看起来很糟糕。
是否有一种简单的方法可以避免在不使用LocationChanged
事件的情况下将窗口移动到给定区域之外?我基本上想要在发生之前限制窗口的移动。
答案 0 :(得分:2)
使用WPF很难实现这些功能,因为它不会暴露基本的Win32函数和WinForms之类的事件。我有一个项目,我需要调整窗口大小,我必须使用PInvoke SetWindowPos以正常方式执行此操作。
AddHook可能对您有所帮助,但这仍然非常困难。有关详细信息,请参阅http://www.wpfmentor.com/2009/01/how-to-get-hwnd-and-hook-into-wndproc.html和http://msdn.microsoft.com/en-us/library/system.windows.interop.hwndsource.addhook.aspx。