我在表单上有一个按钮,代码如下:
$BrowseButton = New-Object System.Windows.Forms.Button
$BrowseButton.Location = New-Object System.Drawing.Size(97,75)
$BrowseButton.Size = New-Object System.Drawing.Size(75,23)
$BrowseButton.Text = "Browse"
$BrowseButton.Add_Click({$pathForm.Close();getPath})
$pathForm.Controls.Add($BrowseButton)
我的目标是关闭$ pathForm并调用以下函数:
Function getPath {
$app = new-object -com Shell.Application
$folder = $app.BrowseForFolder(0, "Select Folder", 0, "C:\")
if ($folder.Self.Path -ne "") {$selected = "You selected " + $folder.Self.Path}
}
如果没有调用$ getPath,表单将按预期关闭。但是,当我向单击添加“getPath”时,表单不会关闭,并且后面会打开BrowseForFolder shell应用程序。是什么导致它保持开放?
我是PowerShell和编码的新手,因此我的代码中可能存在明显的错误。谢谢!
答案 0 :(得分:0)
对我而言,麻烦来自于Add_Click
函数中运行的代码由消息泵执行,该消息泵将执行消息以关闭表单。一种解决方案是在Start-job
CmdLet中执行getPath。