为什么弹出窗口上的图标和按钮有时看起来不一样?

Why does the icon and buttons on the popup look different sometimes?

当我注意到发生了一些奇怪的事情时,我正在使用 PowerShell 测试弹出窗口。

与另一种显示方法相比,弹出窗口左侧的图标看起来有所不同。此外,按钮样式也不同。

它们都是 运行 在同一系统 (Windows 10 Pro) 上,并且代码完全相同(如下所示)。两者都是 运行 PowerShell 5.1。

Add-Type -AssemblyName PresentationFramework

$result = [System.Windows.MessageBox]::Show("Would you like to continue?", "Continue?", "YesNo", "Information", "No")
Write-Host $result

1.旧图标和按钮

旧图标和按钮是使用典型的 PowerShell 应用程序创建的。我将文件保存为 .ps1 文件,然后像往常一样 运行 它。

$ ./test.ps1

但是,它给了我这个弹出窗口。这很正常,但它看起来更像是 Windows 7 弹出窗口而不是 Windows 10.


2。新图标和按钮

新图标和按钮是使用 Windows PowerShell ISE 创建的。是运行没有保存文件(直接点击运行按钮执行)

这给了我一个弹出窗口,我希望在 Windows 10.

上看到


那么,这种行为是预期的吗?还有,为什么会这样?

解决方案

您需要在弹出窗口之前的代码中添加以下行。

[System.Windows.Forms.Application]::EnableVisualStyles()

这会给弹出窗口带来新的、现代的感觉。


为什么?

发生这种情况的原因是,当 运行在 PowerShell ISE 中执行此操作时,它会自动 运行 使用 EnableVisualStyles 选项对其进行设置。

但是,当代码在 PowerShell 中为 运行 时,它不会添加 EnableVisualStyles 部分,除非您指定如此。

这就是弹出窗口在 PowerShell 中看起来“较旧”,但在 PowerShell ISE 中看起来更现代的原因。