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是否会正确执行,您可能必须截获消息。