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 シェル アプリが背後で開きます。開いたままになる原因は何ですか?

私はPowerShellとコーディング全般に慣れていないため、コードに明らかなエラーがある可能性があります。ありがとう!

4

1 に答える 1

0

Add_Click私にとっての問題は、関数で実行されるコードが、メッセージを実行してフォームを閉じるのと同じメッセージポンプによって実行されるという事実から来ています。Start-job1 つの解決策は、 CmdLetで getPath を実行することです。

于 2013-08-03T06:21:22.070 に答える