1
以下のコードはPowerシェル2では日付を返しますが、Powers hellでは返しません3フォームオブジェクトが終了すると変数$ dtmDateをクリアしていると仮定します。どのように私はそれを使用するために戻って持っている?Powershell 2 works 3 does not
乾杯
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
$objForm = New-Object Windows.Forms.Form
$objForm.Text = "Select a Date"
$objForm.Size = New-Object Drawing.Size @(190,190)
$objForm.StartPosition = "CenterScreen"
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({
if ($_.KeyCode -eq "Enter")
{
$dtmDate=$objCalendar.SelectionStart
$objForm.Close()
}
})
$objForm.Add_KeyDown({
if ($_.KeyCode -eq "Escape")
{
$objForm.Close()
}
})
$objCalendar = New-Object System.Windows.Forms.MonthCalendar
$objCalendar.ShowTodayCircle = $False
$objCalendar.MaxSelectionCount = 1
$objForm.Controls.Add($objCalendar)
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()
if ($dtmDate)
{
Write-Host "Date selected: $dtmDate"
}
'$グローバル:dtmDate = $ objCalendar.SelectionStart'。 (いいえ、正確なスコープルールがわからない、または2と3の間で変更されたものがある場合) –
実際には、投稿されたコードがPS2で機能するのは非常に奇妙です。 – wOxxOm
@ JeroenMostertはい、「何か」が2と3の間で変更されました(.NET DLRで3.0+が実行されました)、イベントアクションのスコープルールに影響しました –