2013-08-02 93 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