在wpf中移动无边框窗口
在我的C#WinForms应用程序中,我有一个隐藏默认控件的主窗口。
所以为了让我可以移动它,我将以下内容添加到主窗口:
private const int WM_NCHITTEST = 0x84; private const int HTCLIENT = 0x1; private const int HTCAPTION = 0x2; private const int WM_NCLBUTTONDBLCLK = 0x00A3; protected override void WndProc(ref Message message) { if (message.Msg == WM_NCLBUTTONDBLCLK) { message.Result = IntPtr.Zero; return; } base.WndProc(ref message); //Allow window to move if (message.Msg == WM_NCHITTEST && (int)message.Result == HTCLIENT) message.Result = (IntPtr)HTCAPTION; }
我有一个WPF应用程序,我也隐藏了默认控件,我想做同样的事情。 我看到主窗口是从’Window’派生的,所以上面的代码不起作用。 我如何在WPF中执行此操作?
为此,您需要将事件处理程序附加到窗口的MouseDown
事件,检查是否按下了鼠标左键并在窗口上调用DragMove
方法。
以下是具有此function的窗口示例:
public partial class MyWindow : Window { public MyWindow() { InitializeComponent(); MouseDown += Window_MouseDown; } private void Window_MouseDown(object sender, MouseButtonEventArgs e) { if (e.ChangedButton == MouseButton.Left) DragMove(); } }
正如我在你的另一个主题中所说,在我在WPF中创建自定义窗口的过程中,我发现了一些在线处理Win32 API以Resize
窗口Resize
的方法,如果你想拖动窗口,JustinM代码是正确的。
代码有点广泛。 它处理游标,消息到WndProc
和所有。 我将留下一个解释它的链接。
WPF无边框窗口resize