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

Ez a minta csak Windows-platformokra vonatkozik.

A Windows PowerShell 3.0-s és újabb verzióival 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 a következőt a Windows PowerShell I Standard kiadás-be, majd mentse PowerShell-szkriptfájlké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 Windows.Forms.Form .NET-keretrendszer osztály új példányát. Ez egy üres űrlapot vagy ablakot biztosít, amelyhez vezérlőket adhat hozzá.

$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 kivonatoló 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 a CenterScreenre állítja, minden betöltéskor automatikusan megjeleníti az űrlapot a képernyő közepén.

  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 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 gomb pozíciója 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ípusok használatával határozza meg a gomb viselkedését.

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

Hasonlóképpen 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á az alábbi kódsort az űrlap Windows rendszerben 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 legyen az űrlappal, miután a felhasználók kijelölnek egy napot a naptárban, majd kattintson az OK gombra, vagy nyomja le az Enter billentyűt. A Windows PowerShell megjeleníti a felhasználók számára kijelölt dátumot.

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

Lásd még