Grafiksel bir tarih seçici oluşturma


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

Kullanıcıların ayın bir gününü seçmesine olanak tanıyan grafiksel, takvim tarzı denetime sahip bir form oluşturmak için Windows PowerShell 3,0 ve sonraki sürümlerini kullanın.

Grafiksel bir tarih seçici denetimi oluşturma

Aşağıdakini kopyalayıp Windows PowerShell ISE'ye yapıştırın ve ardından bunu bir 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())"
}

Komut dosyası iki .NET Framework sınıfının yüklenmesiyle başlar: System.Drawing ve System.Windows.Forms. Daha sonra .NET Framework sınıfı Windows.Forms.Form'un yeni bir örneğini başlatırsınız. Bu, kontrol 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 karma tablosunu kullanarak bu sınıfın dört özelliğine değer atar.

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

  2. Boyut: Formun piksel cinsinden boyutudur. Önceki komut dosyası, 243 piksel genişliğinde ve 230 piksel yüksekliğinde bir form oluşturur.

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

  4. En üstte: Bu özelliği $true olarak ayarlayarak, pencereyi diğer açık pencerelerin ve iletişim kutularının üstünde açılmaya zorlayabilirsiniz.

Daha sonra formunuza bir takvim denetimi oluşturun ve ekleyin. Bu örnekte, geçerli gün vurgulanmamıştır veya daire içine alınmamıştır. Kullanıcılar takvimde aynı anda yalnızca bir gün seçebilir.

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

Daha sonra 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, sol kenarından ise 38 pikseldir. Düğme yüksekliği 23 piksel, düğme uzunluğu ise 75 pikseldir. Komut dosyası, 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 pencerenin üst kısmından 165 piksel, sol kenarından ise 113 piksel uzaklıktadır.

$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'ta görüntülemek için aşağıdaki kod satırını ekleyin.

$result = $form.ShowDialog()

Son olarak, if bloğunun içindeki kod, kullanıcılar takvimde bir gün seçtikten ve ardından Tamam düğmesini tıkladıktan veya tuşuna bastıktan sonra Windows'a formla ne yapması gerektiğini bildirir. >Giriş 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 bakınız

  • GitHub: Dave Wyatt'ın WinFormsExampleUpdates'i
  • Haftanın Windows PowerShell İpucu: Grafiksel Tarih Seçici Oluşturma)

İlgili makaleler