winforms - FolderBrowserDialog 置于最前面

标签 winforms powershell folderbrowserdialog

我有以下运行良好的 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 个变体(重载)。

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

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

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/

相关文章:

c# - 使用 ErrorProvider 组件在 WinForms 中进行数据验证

powershell - 用 'X'的值初始化 'X'大小为 '0'的矩阵

c# - 如何在 PowerShell 中捕获控制台关闭事件?

.net - 如何增加WinForms中复选框的大小?

c# - 图片框C#的随机输出图像

c# - 将当前表单移动到屏幕左侧

powershell - "RenewDHCPLease()"和 "IPConfig/renew"之间的区别?

c# - 如何在 .NET Core 3.0 中为 WPF 应用程序引用 System.Windows.Forms?

c# - WPF TreeView 项目不可选

c# - FolderBrowserDialog 嵌套文件夹