public static class Win32
{
public static void Unminimize(Window window)
{
var hwnd = (HwndSource.FromVisual(window) as HwndSource).Handle;
ShowWindow(hwnd, ShowWindowCommands.Restore);
}
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, ShowWindowCommands nCmdShow);
private enum ShowWindowCommands : int
{
/// <summary>
/// Activates and displays the window. If the window is minimized or
/// maximized, the system restores it to its original size and position.
/// An application should specify this flag when restoring a minimized window.
/// </summary>
Restore = 9,
}
}
7条答案
按热度按时间33qvvth11#
不确定这是否适用于每个人,但我今天遇到了这个问题,团队中有人建议“* 您是否尝试过正常*"?
事实证明他是对的,下面的代码可以很好地恢复你的窗口:
这样做很好,如果需要的话可以将窗口恢复到最大化状态。第二次调用 WindowState.Normal 会将窗口“恢复”到非最大化状态,首先检查最小化状态似乎很重要。
2guxujil2#
SystemCommands类有一个名为RestoreWindow的静态方法,用于将窗口还原到以前的状态。
[Note用法:SystemCommands类是.NET 4.5+ (MSDN Ref)的一部分,对于面向早期版本Framework的项目,可以使用WPF shell 程序扩展(MSDN Ref) ]
ddhy6vgd3#
WPF的观点是这是一个操作系统的特性。如果你想搞砸操作系统的特性,你可能不得不亲自动手。幸运的是,他们为我们提供了这样做的工具。下面是一个UN-minimize方法,它采用WPF窗口,并使用WIN32来完成效果,而不记录任何状态:
lzfw57am4#
出于某种原因,
不适合我。所以我使用以下代码&它工作..
bcs8qyzn5#
下面是我如何让它恢复现在:我处理
StateChanged
事件以跟踪不是Minimized
的最后一个状态为了恢复,我必须分别设置
WindowState
:tyu7yeag6#
嗯,这个答案对我不起作用。当从任务栏中调用“最大化”窗口时,它会自动居中(以正常大小显示,尽管它的状态是最大化),以及通过标题栏拖动窗口等操作最终都不起作用。(基本上是通过反复试验),我找到了解决方法。感谢@H.B.和@Eric Liprandi指引我找到了答案!代码如下:
kyks70gy7#
在本机Windows中,您可以使用
[ShowWindow](http://msdn.microsoft.com/en-us/library/ms633548.aspx) (SW_RESTORE)
将窗口恢复到以前的状态:激活并显示窗口。如果窗口被最小化或最大化,系统会将其还原到原始大小和位置。应用程序在还原最小化的窗口时应该指定这个标志。
当然.Net也有类似的东西。