C# 调整窗口大小而不显示窗口内容
在Windows中,您有一个“拖动时显示窗口内容”的设置。禁用此选项后,您将使用窗口的轮廓调整大小 我的WPF应用程序上有很多控件,所以调整大小非常慢。有没有办法通过只显示窗口轮廓而不是总是更新内容来调整我的应用程序的大小 我发现了这一点,但不幸的是,我不能适应WPF。我可以连接到C# 调整窗口大小而不显示窗口内容,c#,wpf,windows,resize,C#,Wpf,Windows,Resize,在Windows中,您有一个“拖动时显示窗口内容”的设置。禁用此选项后,您将使用窗口的轮廓调整大小 我的WPF应用程序上有很多控件,所以调整大小非常慢。有没有办法通过只显示窗口轮廓而不是总是更新内容来调整我的应用程序的大小 我发现了这一点,但不幸的是,我不能适应WPF。我可以连接到HwndSource,但在Windows 10中消息编号可能已更改,因此该答案中的if语句从未输入。。。或者可能还有其他事情在起作用 此外,在if中,它在is更改系统参数后调用WndProcbase,然后在完成调用后重
HwndSource
,但在Windows 10中消息编号可能已更改,因此该答案中的if
语句从未输入。。。或者可能还有其他事情在起作用
此外,在if
中,它在is更改系统参数后调用WndProc
base,然后在完成调用后重置系统参数。但是调用该方法在WPF中不是一个选项,因为窗口对象无法转发消息
public void OnViewLoaded() {
HwndSource source = HwndSource.FromHwnd(
new WindowInteropHelper(this).Handle);
source?.AddHook(WndProc);
}
private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam,
IntPtr lParam, ref bool handled) {
if (msg == WM_SYSCOMMAND && (wParam.ToInt32() & 0xfff0) == SC_SIZE) {
// This if is never entered
int isDragFullWindow;
GetSystemParametersInfo(SPI_GETDRAGFULLWINDOWS, 0, out isDragFullWindow, 0);
if (isDragFullWindow != 0)
SetSystemParametersInfo(SPI_SETDRAGFULLWINDOWS, 0, 0, 0);
// How to call this?
base.WndProc(ref m);
if (isDragFullWindow != 0)
SetSystemParametersInfo(SPI_SETDRAGFULLWINDOWS, 1, 0, 0);
}
}
这就是你要找的吗@科里吉尔很可能是。在调整大小之前,您建议我如何暂停主窗口控件?我不知道在调整大小之前触发了哪个事件或消息。如上所述,您的问题太广泛了。甚至没有一个好的例子来说明这个问题。也就是说,为什么不在开始调整大小时在窗口中隐藏根级别元素,并在调整完毕后再次显示它呢?有关检测大小调整的开始和结束的信息,请参阅。