我具有以下运行良好的PowerShell函数,但该窗口在PowerShell ISE背后的背景中打开。

# Shows folder browser dialog box and sets to variable
function Get-FolderName() {
    Add-Type -AssemblyName System.Windows.Forms
    $FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog -Property @{
        SelectedPath = 'C:\Temp\'
        ShowNewFolderButton = $false
        Description = "Select Staging Folder."
    }
    # If cancel is clicked the script will exit
    if ($FolderBrowser.ShowDialog() -eq "Cancel") {break}
    $FolderBrowser.SelectedPath
} #end function Get-FolderName

我看到有一个.TopMost属性可以与OpenFileDialog类一起使用,但这似乎并没有转移到FolderBrowserDialog类上。

我想念什么吗?

最佳答案

希望这可以帮助

Add-Type -AssemblyName System.Windows.Forms
$FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
$FolderBrowser.Description = 'Select the folder containing the data'
$result = $FolderBrowser.ShowDialog((New-Object System.Windows.Forms.Form -Property @{TopMost = $true }))
if ($result -eq [Windows.Forms.DialogResult]::OK){
$FolderBrowser.SelectedPath
} else {
exit
}

//编辑评论

ShowDialog()方法有两种变体(重载)。

请参阅文档:http://msdn.microsoft.com/en-us/library/system.windows.forms.openfiledialog.showdialog%28v=vs.110%29.aspx

在第二个变体中,您可以指定应该作为对话框之母的窗口。

最上面的东西应该很少使用或根本不使用!如果多个窗口位于最顶层,那么哪个位于最顶层? ;-))
首先尝试将您的窗口设置为母亲,然后OpenfileDialog / SaveFileDialog应该始终出现在窗口上方:
$openFileDialog1.ShowDialog($form1)

如果这还不够,请选择“最高”。

您的对话窗口继承了母亲的属性。如果您的母窗口位于最上方,则对话框也位于最上方。

这是将对话框设置为最高的示例。

但是,在此示例中,使用了一个新的未绑定(bind)窗口,因此该对话框未绑定(bind)。
$openFileDialog1.ShowDialog((New - Object System.Windows.Forms.Form - Property @{TopMost = $true; TopLevel = $true}))

10-06 15:35