C# 当WindowsStyle为SingleBorderWindow时,在最大化状态下隐藏任务栏

C# 当WindowsStyle为SingleBorderWindow时,在最大化状态下隐藏任务栏,c#,.net,wpf,C#,.net,Wpf,我在我的设置窗口中设置了一个选项,让我的用户在最大化窗口时选择是显示Windows任务栏还是完全全屏显示 我试过这个 static readonly IntPtr HWND_TOPMOST = new IntPtr(-1); const uint SWP_NOSIZE = 0x0001; const uint SWP_NOMOVE = 0x0002; const uint SWP_SHOWWINDOW = 0x0040; public static void S

我在我的设置窗口中设置了一个选项,让我的用户在最大化窗口时选择是显示Windows任务栏还是完全全屏显示

我试过这个

static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
    const uint SWP_NOSIZE = 0x0001;
    const uint SWP_NOMOVE = 0x0002;
    const uint SWP_SHOWWINDOW = 0x0040;

    public static void SetFormTopMost()
    {
        IntPtr windowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle;
        SetWindowPos(windowHandle, HWND_TOPMOST, 0, 0, 0, 0,
                     SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
    }

但这是行不通的。甚至连最顶级的都没有。

您可以尝试以下方法:

    public void MaximizeWindow(bool IsFullScreenWithTaskbar)
    {
        if (IsFullScreenWithTaskbar)
        {
            this.MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;             
        }
        this.WindowStyle = WindowStyle.SingleBorderWindow;
        this.ResizeMode = ResizeMode.NoResize;
        this.WindowState = WindowState.Maximized;
    }

这使得用户无法再调整大小。那不是我想要的。我想要的是在我的设置窗口中保留一个名为“允许全屏”的复选框。当他检查并单击“最大化”按钮时,窗口应完全隐藏任务栏。您可以轻松删除调整大小模式:),并可以使用窗口Application.Current.MainWindow代替“this”。这只是一个例子。投反对票没问题,这是经常发生的:)不,我不是投反对票的人。我得到了一个新信息,当ResizeMode设置为NoResize时,可以实现完整的全屏显示。此外,我将无法更改调整大小模式。试想一下,如果我用这段代码全屏显示,恢复按钮将被禁用,无法恢复正常大小。即使StateChanged事件在我尝试最小化之前也不会触发,那么我应该将代码放置在何处以删除ResizeMode?此代码不会按需要工作,首先
MaximizedPrimaryScreenHeight
不会返回您的显示器大小,而是如msdn
中所述的高度,以像素为单位,在主显示器上显示最大化的顶级窗口。
。另一件事是,有一个与显示器高度相同的窗口只会隐藏任务栏,任务栏仍在渲染中。DisplaySettingsChanged不会被触发(正如我之前所说,对不起),而是SizeChanged yes。您可以在此事件上重置ResizeMode