我有以下运行良好的 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 () 方法有 2 个变体(重载)。
在第二个变体中,您可以指定应该作为对话之母的窗口。
topmost 应该少用或者根本不用!如果多个窗口是最顶层的,那么哪个是最顶层的? ;-)) 首先尝试将您的窗口设置为母窗口,然后 OpenfileDialog/SaveFileDialog 应该始终出现在您的窗口上方:
$openFileDialog1.ShowDialog($form1)
如果这还不够,请选择 Topmost。
你的对话窗口继承了母亲的属性。如果您的母窗口位于最顶层,那么对话框也位于最顶层。
这是一个将对话设置为最顶层的示例。
然而,在这个例子中,使用了一个新的未绑定(bind)窗口,所以对话框是未绑定(bind)的。
$openFileDialog1.ShowDialog((New - Object System.Windows.Forms.Form - Property @{TopMost = $true; TopLevel = $true}))
关于winforms - FolderBrowserDialog 置于最前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54037292/