wpf 最大最小化窗口详细

转自分享

public static void Win(this Window window)
        {
            //如果是全屏,则最小化
            if (window.WindowState == WindowState.Maximized)
            {
                window.Topmost = false;
                window.WindowState = WindowState.Normal;
                window.WindowStyle = WindowStyle.SingleBorderWindow;

window.ResizeMode = ResizeMode.CanResizeWithGrip;//设置为可调整窗体大小

//获取窗口句柄 
                var handle = new WindowInteropHelper(window).Handle;
                //获取当前显示器屏幕
                Screen screen = Screen.FromHandle(handle);

window.Left = (screen.Bounds.Width - window.Width) / 2;
                window.Top = (screen.Bounds.Height - window.Height) / 2;

window.WindowState = WindowState.Minimized;
                return;
            }

//如果是窗口,则全屏
            if (window.WindowState == WindowState.Normal)
            {
                //变成无边窗体
                window.WindowState = WindowState.Normal;//假如已经是Maximized,就不能进入全屏,所以这里先调整状态
                window.WindowStyle = WindowStyle.None;
                window.ResizeMode = ResizeMode.NoResize;
                window.Topmost = true;//最大化后总是在最上面

//获取窗口句柄 
                var handle = new WindowInteropHelper(window).Handle;

//获取当前显示器屏幕
                Screen screen = Screen.FromHandle(handle);

//调整窗口最大化,全屏的关键代码就是下面3句
                window.MaxWidth = screen.Bounds.Width;
                window.MaxHeight = screen.Bounds.Height;
                window.WindowState = WindowState.Maximized;

//解决切换应用程序的问题
                window.Activated += new EventHandler(window_Activated);
                window.Deactivated += new EventHandler(window_Deactivated);
            }

}

static void window_Deactivated(object sender, EventArgs e)
        {
            var window = sender as Window;
            window.Topmost = false;
        }

static void window_Activated(object sender, EventArgs e)
        {
            var window = sender as Window;
            window.Topmost = true;
        }

原文地址:https://www.cnblogs.com/pengde/p/10217163.html

时间: 2024-10-05 23:25:17

wpf 最大最小化窗口详细的相关文章

WPF 最大化最小化窗口

public static void FullOrMin(this Window window)        {            //如果是全屏,则最小化            if (window.WindowState == WindowState.Maximized)            {                window.Topmost = false;                window.WindowState = WindowState.Normal; 

WPF程序最小化到任务通知栏

我们通常使用的桌面软件,都可以最小化到任务通知栏,并且可以从任务通知栏再打开当前软件,或者通过软件的快捷方式从任务通知栏呼出. 我们可以通过下面的方式把WPF程序最小化到任务栏.由于WPF并没有实现Notification的功能,我们需要借助于WinForm中NotifyIcon来实现,请看代码: using WinForms = System.Windows.Forms; private WinForms.NotifyIcon _notifyIcon; private WinForms.Con

wpf 窗口最小化后,触发某事件弹出最小化窗口并置顶

//如果窗口最小化了弹出并置顶----事件触发调用 ShowWindowAsync(new System.Windows.Interop.WindowInteropHelper(CommonHelper.view).Handle, 1); SetForegroundWindow(new System.Windows.Interop.WindowInteropHelper(CommonHelper.view).Handle); [System.Runtime.InteropServices.Dll

最小化窗口到托盘区-VC++

1.在窗口类的.h文件中添加变量:NOTIFYICONDATA  pnid; 2.在窗口类的.CPP文件中自定义消息:WM_MYMESSAGE 3.在窗口类的初始化函数OnInitDialog中添加代码: pnid.cbSize = (DWORD)sizeof(NOTIFYICONDATA); pnid.hWnd = m_hWnd; pnid.uID = (UINT)m_hIcon; pnid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP; //图标有效|自定义消息

Linux窗口最小化消失,任务栏上无法找到的解决方法

“我在Linux系统下最小化窗口时就消失了,在任务栏上也无法找到,你知道怎么让它在任务栏上显示吗?”——到目前为止,已经有不下于五个朋友问过我这个问题.尽管这是一个Linux系统X Window中入门级的操作,但我很惊讶居然让这么多人感到迷惑.更有趣的是,有个家伙发现这种情况下可以用Alt+Tab切换窗口,于是就以为是自己安装的Linux操作系统有问题,问我是不是需要重装系统! 闲话少说,上解决方法:先纠正一个概念,在Linux的Gnome或KDE桌面环境里,跟Windows的任务栏一样的横条叫

Arch Linux最小化安装LXDE桌面环境

安装最小化的LXDE桌面环境: pacman -S lxde-common 安装LXDE Session: pacman -S lxsession 不安装这个没法登录进桌面环境 安装LXDE面板: pacman -S lxpanel 不安装这个,进入LXDE桌面环境后什么都没有 安装窗口管理器: pacman -S openbox 不安装这个,既不能移动窗口,也不能最大.最小化窗口 安装LXDE环境下的终端程序: pacman -S lxterminal 安装LXDE环境下的文件管理器: pac

VC++ 如何使窗体最大化或是最小化

最大化最小的使得的函数是 ShowWindow函数 ShowWindow(SW_SHOWMINIMIZED);//最小化 ShowWindow(SW_SHOWMAXIMIZED);//最大化 ShowWindow(SW_RESTORE);//还原 ------- PostMessage(hwnd,WM_SYSCOMMAND,SC_MINIMIZE,0); SC_MAXIMIZE为最大化. 使用方法: BOOL ShowWindow( int nCmdShow ); 参数 nCmdShow 指定

Delphi如何让程序最小化到任务栏(截取WM_SYSCOMMAND后,调用Shell_NotifyIcon)

现在很多的应用程序都有这样一种功能,当用户选择最小化窗口时,窗口不是象平常那样最小化到任务栏上,而是“最小化”成一个任务栏图标.象FoxMail 3.0 NetVampire 3.0等都提供了这样的功能.实现这样的功能实际上并不复杂,在窗口最小化时,窗口会发出WM_SYSCOMMAND消息,你只要需要截取Windows的WM_SYSCOMMAND消息,在窗口最小化时隐藏窗口并调用WindowsAPI函数Shell_NotifyIcon将定义的图标添加到任务栏上,Shell_NotifyIcon的

win10程序最小化后任务栏没有显示的解决方法

通常情况下我们会在电脑打开很多应用程序,当我们暂时不需要使用的时候我们会将它最小化,最小化后会以缩略图的形式出现在任务栏中,等我们有需要的时候再打开就行.但是今天用电脑时发现将程序最小化之后任务栏中却看不到程序的最小化窗口(注意为win10操作系统),这样使用带来非常的不方便,那么为什么会出现这种情况呢?经研究发现出现这种问题主要是由于资源管理器出现问题所引起的,下面为大家介绍解决方法.1.打开任务管理器,右击任务栏选择任务管理器或者同时按下[ctrl+shift+esc]组合键打开:2.找到[