0

不确定是什么导致了这个问题,但我有一个使用 Windows 窗体作为 UI 的 PowerShell 脚本。在 PowerShell ISE 中开发它时,现代风格的按钮看起来一切都很好。当我从 PowerShell 运行它时,它会显示在 Windows 经典样式视图中,并在我调用New-Object System.Windows.Forms.SaveFileDialog. 是否有解决此问题的方法可以添加到我的代码中,这样我的脚本不仅看起来更好,而且实际上可以在 ISE 之外运行?

编辑:这是我调用的函数SaveFileDialog。这在 ISE 内部有效,但是当我从 PowerShell 本身运行脚本时,它会在我调用它时崩溃。

function exportToCSV([System.Object[]] $expArray) {
    $save = New-Object System.Windows.Forms.SaveFileDialog
    $save.CreatePrompt = $False
    $save.SupportMultiDottedExtensions = $True
    $save.DefaultExt = "csv"
    $save.Filter = "CSV (*.csv) | *.csv*"
    $save.Title = "Export to CSV"
    if ($save.ShowDialog() -eq "OK") {
        $expArray | export-csv $save.FileName
    }
}
4

1 回答 1

3

在显示表单之前在脚本中包含以下命令以获得现代风格的外观。

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

但是,这应该不会影响savefiledialog. 我需要更多来帮助你,因为你说它在 ISE 中有效,但在普通控制台中无效。

您的解决方法SaveFileDialog是添加:

$save.ShowHelp = $true

在 PS3.0 中一切正常,但在 PS2.0 中对话框不显示。修复了该ShowHelp问题,但也为您提供了旧式对话框。但是,功能比外观更重要。:)

于 2013-05-18T17:32:07.113 回答