2013-08-02 105 views
1

我有下面的代码窗体上的按钮:为什么打电话时不PowerShell的形式关闭功能关闭后

$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

作为一个简单的解决方案,我从我的函数中删除了最顶层的属性,只是让这个窗口在背景中冷却,直到getPath函数完成。 – Blackjack00

回答

0

对我来说,麻烦来自Add_Click函数中运行的代码是由一个消息泵执行的,它将执行消息来关闭表单。一种解决方案是在Start-job CmdLet中执行getPath。

+0

感谢您的帮助。结束了其他事情,但这也会起作用。 – Blackjack00