1

我在带有以下代码的表单上有一个按钮:

$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 和一般编码的新手,所以我的代码中可能存在明显的错误。谢谢!

4

1 回答 1

0

对我来说,问题在于Add_Click函数中运行的代码是由消息泵执行的,该消息泵将执行消息以关闭表单。一种解决方案是在Start-jobCmdLet 中执行 getPath。

于 2013-08-03T06:21:22.070 回答