我有一个powershell日历,允许选择日期范围。 MaxDate属性设置为当前日期。我遇到的问题是我可以选择今天的日期,但不能作为范围的一部分。我可以选择多个日期,但只要我在选择中包含今天的日期,它就会选择今天的日期。问题可能是MaxDate属性,因为如果我删除它,我可以选择今天的日期作为范围的一部分,但我不想这样做,因为这将允许将来选择几天。任何想法如何添加今天的日期,并允许它成为所选范围的一部分?代码如下。感谢。
$Calendar = New-Object System.Windows.Forms.MonthCalendar
$Calendar.Location = New-Object System.Drawing.Size(10,80)
$Calendar.ShowTodayCircle = $False
$Calendar.MaxDate = Get-Date
$Calendar.MinDate = $OldestLog
$Calendar.MaxSelectionCount = "365"
$MenuBox.Controls.Add($Calendar)
答案 0 :(得分:2)
似乎MaxDate
的值在某个范围内不可用。这可能是有原因的,但我们称之为bug。解决方法是将第二天用作MaxDate
并手动处理未来日期的选择,如下所示:
#Handler to check and save selected date
$handler_Calendar_DateChanged=
{
Write-Host "$Calendar.SelectionRange"
if ($Calendar.SelectionRange.End -gt (Get-Date)) {
[System.Windows.Forms.MessageBox]::Show("You can't select a date in the future.", "Invalid date", [System.Windows.Forms.MessageBoxButtons]::OK ,[System.Windows.Forms.MessageBoxIcon]::Error)
#Select todays date
$Calendar.SetDate((Get-Date))
} else {
#Store selected daterange
$global:daterange = $Calendar.SelectionRange
}
}
#Later when you specify the calendar object
$Calendar.MaxDate = (Get-Date).AddDays(1)
$Calendar.add_DateChanged($handler_Calendar_DateChanged)