Grafik tarih seçici oluşturma

Bu örnek yalnızca Windows platformları için geçerlidir.

Windows PowerShell 3.0 ve sonraki sürümleri kullanarak kullanıcıların ayın bir gününü seçmesine olanak tanıyan grafik, takvim stilinde bir denetime sahip bir form oluşturun.

Grafik tarih seçici denetimi oluşturma

Aşağıdakini kopyalayıp Windows PowerShell ISE'ye yapıştırın ve powershell betiği (.ps1) dosyası olarak kaydedin.

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$form = New-Object Windows.Forms.Form -Property @{
    StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen
    Size          = New-Object Drawing.Size 243, 230
    Text          = 'Select a Date'
    Topmost       = $true
}

$calendar = New-Object Windows.Forms.MonthCalendar -Property @{
    ShowTodayCircle   = $false
    MaxSelectionCount = 1
}
$form.Controls.Add($calendar)

$okButton = New-Object Windows.Forms.Button -Property @{
    Location     = New-Object Drawing.Point 38, 165
    Size         = New-Object Drawing.Size 75, 23
    Text         = 'OK'
    DialogResult = [Windows.Forms.DialogResult]::OK
}
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)

$cancelButton = New-Object Windows.Forms.Button -Property @{
    Location     = New-Object Drawing.Point 113, 165
    Size         = New-Object Drawing.Size 75, 23
    Text         = 'Cancel'
    DialogResult = [Windows.Forms.DialogResult]::Cancel
}
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)

$result = $form.ShowDialog()

if ($result -eq [Windows.Forms.DialogResult]::OK) {
    $date = $calendar.SelectionStart
    Write-Host "Date selected: $($date.ToShortDateString())"
}

Betik, iki .NET Framework sınıfı yüklenerek başlar: System.Drawing ve System.Windows.Forms. Ardından Windows.Forms.Form .NET Framework sınıfının yeni bir örneğini başlatırsınız. Bu, denetim eklemeye başlayabileceğiniz boş bir form veya pencere sağlar.

$form = New-Object Windows.Forms.Form -Property @{
    StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen
    Size          = New-Object Drawing.Size 243, 230
    Text          = 'Select a Date'
    Topmost       = $true
}

Bu örnek, Property özelliğini ve hashtable'ı kullanarak bu sınıfın dört özelliğine değer atar.

  1. StartPosition: Bu özelliği eklemezseniz, Form açıldığında Windows bir konum seçer. Bu özelliği CenterScreen olarak ayarlayarak, formu her yüklendiğinde otomatik olarak ekranın ortasında görüntülersiniz.

  2. Boyut: Bu, formun piksel cinsinden boyutudur. Yukarıdaki betik, 243 piksel genişliğinde ve 230 piksel uzunluğunda bir form oluşturur.

  3. Metin: Bu, pencerenin başlığı olur.

  4. En üstte: Bu özelliği olarak $trueayarlayarak, pencereyi diğer açık pencerelerin ve iletişim kutularının üzerine açmaya zorlayabilirsiniz.

Ardından, formunuza bir takvim denetimi oluşturun ve ekleyin. Bu örnekte geçerli gün vurgulanmamış veya daire içine alınmıyor. Kullanıcılar takvimde bir kerede yalnızca bir gün seçebilir.

$calendar = New-Object Windows.Forms.MonthCalendar -Property @{
    ShowTodayCircle   = $false
    MaxSelectionCount = 1
}
$form.Controls.Add($calendar)

Ardından, formunuz için bir Tamam düğmesi oluşturun. Tamam düğmesinin boyutunu ve davranışını belirtin. Bu örnekte düğme konumu formun üst kenarından 165 piksel ve sol kenardan 38 pikseldir. Düğme yüksekliği 23 piksel, düğme uzunluğu ise 75 pikseldir. Betik, düğme davranışlarını belirlemek için önceden tanımlanmış Windows Forms türlerini kullanır.

$okButton = New-Object Windows.Forms.Button -Property @{
    Location     = New-Object Drawing.Point 38, 165
    Size         = New-Object Drawing.Size 75, 23
    Text         = 'OK'
    DialogResult = [Windows.Forms.DialogResult]::OK
}
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)

Benzer şekilde, bir İptal düğmesi oluşturursunuz. İptal düğmesi üstten 165 piksel, pencerenin sol kenarından 113 pikseldir.

$cancelButton = New-Object Windows.Forms.Button -Property @{
    Location     = New-Object Drawing.Point 113, 165
    Size         = New-Object Drawing.Size 75, 23
    Text         = 'Cancel'
    DialogResult = [Windows.Forms.DialogResult]::Cancel
}
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)

Formu Windows'da görüntülemek için aşağıdaki kod satırını ekleyin.

$result = $form.ShowDialog()

Son olarak, bloğun if içindeki kod, kullanıcılar takvimde bir gün seçtikten sonra Windows'a formla ne yapacağını ve ardından Tamam düğmesine tıklayın veya Enter tuşuna basın. Windows PowerShell, seçilen tarihi kullanıcılara görüntüler.

if ($result -eq [Windows.Forms.DialogResult]::OK) {
    $date = $calendar.SelectionStart
    Write-Host "Date selected: $($date.ToShortDateString())"
}

Ayrıca bkz.