Grafikus dátumválasztó létrehozása

A Windows PowerShell 3.0-s és újabb verzióival olyan grafikus, naptárstílusú vezérlőelemmel rendelkező űrlapot hozhat létre, amellyel a felhasználók kiválaszthatják a hónap egy napját.

Grafikus dátumválasztó vezérlőelem létrehozása

Másolja, majd illessze be az alábbiakat Windows PowerShell ISE-be, majd mentse Windows PowerShell szkriptként (.ps1).

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())"
}

A szkript két .NET-keretrendszer osztály betöltésével kezdődik: System.Drawing és System.Windows.Forms. Ezután elindítja a .NET-keretrendszer windows.forms.form; osztály egy új példányát, amely egy üres űrlapot vagy ablakot biztosít, amelyhez hozzá lehet adni vezérlőket.

$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
}

Ez a példa az osztály négy tulajdonságához rendel értékeket a Tulajdonság tulajdonság és a kivonattábla használatával.

  1. StartPosition: Ha nem adja hozzá ezt a tulajdonságot, a Windows kiválaszt egy helyet az űrlap megnyitásakor. Ha ezt a tulajdonságot CenterScreen értékre állítja, automatikusan megjeleníti az űrlapot a képernyő közepén minden egyes betöltésekor.

  2. Méret: Ez az űrlap mérete képpontban. Az előző szkript egy 243 képpont széles és 230 képpont magas űrlapot hoz létre.

  3. Szöveg: Ez lesz az ablak címe.

  4. Legfelső: A tulajdonság $truebeállításával kényszerítheti az ablakot más megnyitott ablakok és párbeszédpanelek megnyitására.

Ezután hozzon létre és vegyen fel egy naptárvezérlőt az űrlapon. Ebben a példában az aktuális nap nincs kiemelve vagy bekarikázva. A felhasználók egyszerre csak egy napot választhatnak ki a naptárban.

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

Ezután hozzon létre egy OK gombot az űrlaphoz. Adja meg az OK gomb méretét és viselkedését. Ebben a példában a gombpozíció 165 képpont az űrlap felső szélétől, 38 képpont a bal széltől. A gomb magassága 23 képpont, míg a gomb hossza 75 képpont. A szkript előre definiált Windows Forms típusokat használ a gomb viselkedésének meghatározásához.

$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)

Ehhez hasonlóan létrehoz egy Mégse gombot is. A Mégse gomb felülről 165 képpont, az ablak bal szélétől 113 képpont.

$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)

Adja hozzá a következő kódsort az űrlap Windowsban való megjelenítéséhez.

$result = $form.ShowDialog()

Végül a blokkon belüli kód arra utasítja a if Windowst, hogy mi a teendő az űrlappal, miután a felhasználók kijelöltek egy napot a naptárban, majd kattintson az OK gombra, vagy nyomja le az Enter billentyűt. Windows PowerShell a kijelölt dátumot jeleníti meg a felhasználóknak.

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

Lásd még: