In my C# WinForms app I have a main window that has its default controls hidden.
So to allow me to move it around I added the following to the main window:
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;
}
I have a WPF App where I have also hidden the default controls and I want to do the same. I see that the main window is derived from a 'Window' so the above code does not work. How do I do this in WPF?
3条答案
按热度按时间neskvpey1#
为此,您需要将一个事件处理程序附加到窗口的
MouseDown
事件,检查是否按下了鼠标左键,并在窗口上调用DragMove
方法。以下是具有此功能的窗口示例:
laximzn52#
这非常简单,在这里:
f1tvaqid3#
First of all, you need to make sure that user wants to drag the window. So left button of mouse should be down and it should be moving a least some pixels. Create a point property to store cursor's exact point and add two events to window itself: PreviewMouseLeftButtonDown and MouseMove. Check the code below.