如何将窗口设置为Powershell中的最顶层?

如何将窗口设置为Powershell中的最顶层?,powershell,topmost,Powershell,Topmost,您能告诉我如何将窗口设置为Powershell中的最顶部吗?我使用了以下代码: $form.TopMost = $True 这几乎是完美的。我遇到的问题是,有两个最上面的窗口,出于某种原因,我的窗体有时会被隐藏,并且应该始终位于顶部 如果您有一个主要的最上面的表单,您希望覆盖第一个表单中的最上面的设置(称之为第二个表单),那么将以下内容添加到“主要”表单中 这将使您的辅助窗体恢复正常状态,并允许您的主窗体占据最上面的位置。这只是在理论上,因为我不熟悉同时打开多个窗口窗体,因为据我所知,powe

您能告诉我如何将窗口设置为Powershell中的最顶部吗?我使用了以下代码:

$form.TopMost = $True

这几乎是完美的。我遇到的问题是,有两个最上面的窗口,出于某种原因,我的窗体有时会被隐藏,并且应该始终位于顶部

如果您有一个主要的最上面的表单,您希望覆盖第一个表单中的最上面的设置(称之为第二个表单),那么将以下内容添加到“主要”表单中

这将使您的辅助窗体恢复正常状态,并允许您的主窗体占据最上面的位置。这只是在理论上,因为我不熟悉同时打开多个窗口窗体,因为据我所知,powershell只创建模式对话框,所以我还无法测试此解决方案。

第一个示例: 这张照片取自此网页:

从PowerShell打开MsgBox对话框时,对话框窗口有时可能不可见,而是显示在PowerShell或ISE窗口后面

要确保在PowerShell窗口前显示MsgBox对话框,请尝试以下操作:

Add-Type -AssemblyName Microsoft.VisualBasic
[Microsoft.VisualBasic.Interaction]::MsgBox('My message', 'YesNo,MsgBoxSetForeground,Information', 'MyTitle')
键是选项
MsgBoxSetForeground
。如果您想知道可以选择哪些其他选项,请将第二个参数替换为无意义文本,错误消息将列出所有其他选项名称

一个是
SystemModal
。如果您使用它而不是
MsgBoxSetForeground
,那么MsgBox不仅会出现在前面,还会留在那里。在用户单击对话框的某个按钮之前,任何其他窗口都不能与该对话框重叠

SystemModal
是将此设置为所有窗口中最前面的一个窗口的位

因此,请使用:

Add-Type -AssemblyName Microsoft.VisualBasic
[Microsoft.VisualBasic.Interaction]::MsgBox('My message', 'YesNo,SystemModal,Information', 'MyTitle')

第二个例子: 这是一个目录选择器,取自:


“有两个最上面的窗口”-你显然不能拥有它是的,换句话说,我想要一个窗口,它将禁用当前最上面的表单并将我的推到前面。找不到最上面的属性?formSecondary的
在哪里?
Add-Type -AssemblyName Microsoft.VisualBasic
[Microsoft.VisualBasic.Interaction]::MsgBox('My message', 'YesNo,SystemModal,Information', 'MyTitle')
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
}