我具有以下运行良好的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}))