2013-03-25 61 views
0

我正在使用Powershell创建GUI日历,并且我需要能够为用户选择它们时选择的日期数分配变量。我想我会不得不使用一个事件,但不知道如何处理。基本上,如果用户选择一个超过10天的范围,我需要在同一个表单上复选框进行检查。我正在做一个类似的列表框,但我似乎无法弄清楚如何做与日历相同。谢谢。获取在Windows Forms MonthCalendar中为Powershell选择的日期数

列表框代码:

$Listbox2 = New-Object System.Windows.Forms.ListBox 
$Listbox2.Location = New-Object System.Drawing.Size(240,80) 
$Listbox2.Size = New-Object System.Drawing.Size(140,210) 
$Listbox2.Height = 210 
$Listbox2.SelectionMode = "MultiExtended" 
$Listbox2Content | ForEach-Object {[void] $Listbox2.Items.Add($_)} 
$Listbox2.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",11,0,3,1) 
$Listbox2.Add_SelectedValueChanged({ 
    If (($Listbox2.SelectedItems).Count -ge 10) {$Checkbox2.Checked = $True} 
    If (($Listbox2.SelectedItems).Count -lt 10) {$Checkbox2.Checked = $False} 
    }) 

日历代码:选择日期的

$Calendar = New-Object System.Windows.Forms.MonthCalendar 
$Calendar.Location = New-Object System.Drawing.Size(12,80) 
$Calendar.ShowTodayCircle = $False 
$Calendar.ShowToday = $True 
$Calendar.MaxDate = (Get-Date).AddDays(1) 
$Calendar.MinDate = $OldestLog 
$Calendar.MaxSelectionCount = "$CalendarDateRange" 
$MenuBox.Controls.Add($Calendar) 

回答

1

$data_selected脚本块打印数。我将它附加到DataSelected事件中,以便在您单击日期或进行范围选择时触发。

Add-Type -AssemblyName System.Windows.Forms 
$date_selected = { 
    write-host (($_.End - $_.Start).Days + 1) 
} 

$form = New-Object Windows.Forms.Form 
$form.text = "Calendar" 
$form.FormBorderStyle = 'FixedDialog' 
$form.Size = New-Object Drawing.Size(190,190) 

$cal = New-Object System.Windows.Forms.MonthCalendar 
$cal.add_DateSelected($date_selected) 

$form.Controls.Add($cal) 
$form.Add_Shown($form.Activate()) 
$form.showdialog() | Out-Null 
+0

完美。我只是用脚本范围内的一个变量替换了写主机,它工作得很好。非常感谢。 – atownson 2013-03-26 13:43:30

相关问题