Почему код ниже возвращает дату в силовой оболочке 2, но не в Powers hell 3 Я предполагаю, что это связано с тем, что переменная $ dtmDate очищается после завершения объекта формы. но как мне его вернуть, чтобы его использовали?Powershell 2 works 3 is 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"
}
'$ global: dtmDate = $ objCalendar.SelectionStart'. (Нет, я не знаю точных правил съемки, или если что-то изменилось между 2 и 3.) –
На самом деле, очень странно, что опубликованный код работал в PS2. – wOxxOm
@JeroenMostert Да, «что-то» изменилось между 2 и 3 (3.0+ работает на .NET DLR), и оно повлияло на правила области действия событий. –