Fre*_*her 1 c# win-universal-app
通用应用程序似乎不允许删除或禁用关闭按钮。我们可以通过全屏来隐藏它。但是当将光标移到它上面时,将标题栏带回来。有没有办法去掉关闭按钮?
原因:我正在处理屏幕时间。允许的时间结束后,我想挡住屏幕。我应该删除关闭按钮,以便用户无法跳过我的应用程序。
编辑:删除关闭按钮完全无济于事。这是工作的一部分。我只想问怎么去掉
在 Windows 10 版本 1703(内部版本 10.0.15063)及更高版本中,您可以使用 SystemNavigationManagerPreview 类阻止应用程序关闭。
将其添加到您的应用程序清单中:
<Capabilities>
<rescap:Capability Name="confirmAppClose" />
</Capabilities
Run Code Online (Sandbox Code Playgroud)
您需要在 Package 元素处拥有 rescap 命名空间:
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
Run Code Online (Sandbox Code Playgroud)
在主窗体的构造函数中,添加:
var sysNavMgr = SystemNavigationManagerPreview.GetForCurrentView();
sysNavMgr.CloseRequested += OnCloseRequested;
Run Code Online (Sandbox Code Playgroud)
OnCloseRequested 可以如下实现:
private void OnCloseRequested(object sender, SystemNavigationCloseRequestedPreviewEventArgs e)
{
var deferral = e.GetDeferral();
e.Handled = true;
deferral.Complete();
}
Run Code Online (Sandbox Code Playgroud)
使用当前发布的 API,我们可以自定义标题栏中这三个按钮的颜色。但是没有属性或方法可用于禁用或删除这些按钮。
在 UWP 中,我们可以使用ApplicationView.TitleBar | titleBar 属性来获取标题栏,如下所示:
ApplicationViewTitleBar titleBar = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().TitleBar;
Run Code Online (Sandbox Code Playgroud)
此属性的类型是ApplicationViewTitleBar。它只有几个属性可以自定义按钮的颜色,例如:
titleBar.ButtonBackgroundColor = Windows.UI.Colors.White;
titleBar.ButtonForegroundColor = Windows.UI.Colors.White;
titleBar.ButtonHoverBackgroundColor = Windows.UI.Colors.White;
titleBar.ButtonHoverForegroundColor = Windows.UI.Colors.White;
titleBar.ButtonInactiveBackgroundColor = Windows.UI.Colors.White;
titleBar.ButtonInactiveForegroundColor = Windows.UI.Colors.White;
titleBar.ButtonPressedBackgroundColor = Windows.UI.Colors.White;
titleBar.ButtonPressedForegroundColor = Windows.UI.Colors.White;
Run Code Online (Sandbox Code Playgroud)
然而,这实际上不会隐藏这些按钮。用户仍然可以最小化或最大化应用程序,当指针位于右上角时,他们仍然会看到关闭按钮。

从 Windows 8.1 开始,如果我们希望用户只使用一个应用程序而不执行其他操作,包括关闭应用程序,我们可以使用Kiosk 模式。有关详细信息,请参阅在 Windows 8.1 中启用 Kiosk 模式和在 Windows 10 专业版、企业版或教育版上设置展台。但是,这不符合您的要求,因为您想在允许的时间结束后阻止屏幕。
因此,UWP 可能不是满足您要求的最佳选择。您可以尝试使用经典桌面应用程序来实现它。