Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 禁用空气动力学捕捉和窗口移动_C#_Wpf_Window_Fullscreen - Fatal编程技术网

C# 禁用空气动力学捕捉和窗口移动

C# 禁用空气动力学捕捉和窗口移动,c#,wpf,window,fullscreen,C#,Wpf,Window,Fullscreen,我有一些“信息亭”窗口,应该不惜一切代价保持最大化,但可以最小化(但不能移动) 我的实现非常简单: private void Window_Loaded(object sender, RoutedEventArgs e) { WindowState = WindowState.Maximized; WindowStyle = WindowStyle.None; //Remove the window style after maximizing, to avoid cov

我有一些“信息亭”窗口,应该不惜一切代价保持最大化,但可以最小化(但不能移动)

我的实现非常简单:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    WindowState = WindowState.Maximized;
    WindowStyle = WindowStyle.None;
    //Remove the window style after maximizing, to avoid covering the task bar.

    StateChanged += (o, args) =>
    {
        if (WindowState != WindowState.Minimized)
        {
            WindowState = WindowState.Maximized;
            WindowStyle = WindowStyle.None;
        }
    };
}
为了避免丢失最小化动画,当用户单击最小化时,返回窗口样式

private void Minimize_Click(object sender, RoutedEventArgs e)
{
    WindowStyle = WindowStyle.SingleBorderWindow;
    WindowState = WindowState.Minimized;
}
此代码使窗口全屏显示,没有标题栏,并禁用拖动移动

问题是我仍然可以使用Win+左/右/上/下键盘快捷键移动和调整窗口大小。 此外,还可以使用右键单击任务栏(或Alt+Space以显示窗口上下文菜单,选择“移动”或“还原”)来移动窗口

我尝试使用
ResizeMode=ResizeMode.CanMinimize
(以及其他两个属性),但它会使我的窗口出血到屏幕的两侧

手动调整窗口大小是不可能的

那么,当我使用
最大化
+
+
可以最小化
时,为什么我的窗口会在位置上移动呢?有没有办法正确调整车窗


正如您所看到的,窗口超出了屏幕的大小。我需要避免这种情况。

Aero Snap不使用任何特殊消息来完成其工作。所以你不会得到任何你可以截获的事件来改变它的功能。它显示的帧动画完全不受您的控制,您的程序根本不参与。当用户接受建议的新帧位置时,您最多可以看到结果LocationChanged和SizeChanged事件。一般来说,在kiosk应用程序中尝试同时支持这两种方式没有多大意义。最重要的是,您可以将机器配置为适合用作信息亭。例如禁用Ctrl+Alt+Del。禁用Aero Snap。好的,
Aero Snap
可以对单个窗口禁用,通过组合使用
最大化
+
+
可以最小化
,但我发现由于这种组合,窗口被剪切有点奇怪。请看上图。这是完全正常的,因为您删除了边框。因此,窗口不再使用WM_GETMINMAXINFO返回的适当的最大化边界。在更改窗口状态之前,首先考虑更改窗口样式。实际上不确定WPF是否会正确执行,您可能必须截获消息。