WPF full screen on maximize

后端 未结 9 1873
醉话见心
醉话见心 2021-02-04 12:56

I basically want to have my WPF window to go in full screen mode, when F11 is pressed or the maximize button in the right top corner of the window is pressed.

While the

相关标签:
9条回答
  • 2021-02-04 13:27

    You can hide the taskbar if you import user32.dll...

    [DllImport("user32.dll")]
    private static extern int FindWindow(string className, string windowText);
    [DllImport("user32.dll")]
    private static extern int ShowWindow(int hwnd, int command);
    
    private const int SW_HIDE = 0;
    private const int SW_SHOW = 1;
    

    Usage:

    int hwnd = FindWindow("Shell_TrayWnd","");
    ShowWindow(hwnd,SW_HIDE);
    
    0 讨论(0)
  • 2021-02-04 13:32

    If there is still someone that need a smooth full screen of course tested only on windows 10! In windows 10 minimized do less flickering if you maintain this code order!

        public bool IsFullscreen = false;
        public WindowState lastWindowState;
        private void player_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (IsFullscreen)
            {
                this.WindowStyle = WindowStyle.SingleBorderWindow;
                this.WindowState = lastWindowState;
                IsFullscreen = false;
    
            }
            else
            {
                lastWindowState = this.WindowState;
    
                this.WindowStyle = WindowStyle.None;
                if (this.WindowState == WindowState.Maximized)
                    this.WindowState = WindowState.Minimized;
                this.WindowState = WindowState.Maximized;
                IsFullscreen = true;
            }
        }
    
    0 讨论(0)
  • 2021-02-04 13:33

    I have found easy way to achieve fullscreen in WPF:

        private double LastHeight, LastWidth;
        private System.Windows.WindowState LastState;
    
        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.F11)
            {
                if (WindowStyle != WindowStyle.None)
                {
                    LastHeight = Height;
                    LastWidth = Width;
                    LastState = WindowState;
    
                    Topmost = true;
                    Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
                    Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
                    Top = 0;
                    Left = 0;
                    WindowState = System.Windows.WindowState.Normal;
                    WindowStyle = WindowStyle.None;
                    ResizeMode = System.Windows.ResizeMode.NoResize;
                }
                else
                {
                    WindowStyle = WindowStyle.SingleBorderWindow;
                    WindowState = LastState; ;
                    ResizeMode = ResizeMode.CanResizeWithGrip;
                    Topmost = false;
                    Width = LastWidth;
                    Height = LastHeight;
                }
            }
        }
    

    This works good in Windows 7 with fixed Taskbar.

    0 讨论(0)
提交回复
热议问题