Többszörös kijelölésű listamezők

Ez a minta csak Windows-platformokra vonatkozik.

A Windows PowerShell 3.0-s és újabb verzióival több kijelölési listamező vezérlőelemet hozhat létre egy egyéni Windows-űrlapon.

Több kijelölést engedélyező listamező-vezérlők 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 System.Windows.Forms.Form
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = 'OK'
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = 'Cancel'
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $CancelButton
$form.Controls.Add($CancelButton)

$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please make a selection from the list below:'
$form.Controls.Add($label)

$listBox = New-Object System.Windows.Forms.Listbox
$listBox.Location = New-Object System.Drawing.Point(10,40)
$listBox.Size = New-Object System.Drawing.Size(260,20)

$listBox.SelectionMode = 'MultiExtended'

[void] $listBox.Items.Add('Item 1')
[void] $listBox.Items.Add('Item 2')
[void] $listBox.Items.Add('Item 3')
[void] $listBox.Items.Add('Item 4')
[void] $listBox.Items.Add('Item 5')

$listBox.Height = 70
$form.Controls.Add($listBox)
$form.Topmost = $true

$result = $form.ShowDialog()

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $x = $listBox.SelectedItems
    $x
}

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 System.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 System.Windows.Forms.Form

Az Űrlaposztály egy példányának létrehozása után rendeljen értékeket az osztály három tulajdonságához.

  • Szöveg. Ez lesz az ablak címe.
  • Méret. Ez az űrlap mérete képpontban. Az előző szkript egy 300 képpont széles és 200 képpont magas űrlapot hoz létre.
  • Kezdőpozíció. Ez az opcionális tulajdonság centerScreen értékre van állítva az előző szkriptben. Ha nem adja hozzá ezt a tulajdonságot, a Windows kiválaszt egy helyet az űrlap megnyitásakor. Ha a Kezdőpozíciót a CenterScreenre állítja, az űrlap automatikusan megjelenik a képernyő közepén minden egyes betöltésekor.
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

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 az űrlap felső szélétől 120 képpont, a bal széltől pedig 75 képpont. 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 System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = 'OK'
$OKButton.DialogResult = [System.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 120 képpont, az ablak bal szélétől 150 képpont.

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = 'Cancel'
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $CancelButton
$form.Controls.Add($CancelButton)

Ezután adjon meg címkeszöveget az ablakban, amely leírja a felhasználók által megadni kívánt információkat.

$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please make a selection from the list below:'
$form.Controls.Add($label)

Adja hozzá a vezérlőt (ebben az esetben egy listamezőt), amely lehetővé teszi, hogy a felhasználók megadják a címkeszövegben leírt információkat. A szövegdobozok mellett számos más vezérlő is alkalmazható; további vezérlőkért lásd: System.Windows.Forms Namespace.

$listBox = New-Object System.Windows.Forms.Listbox
$listBox.Location = New-Object System.Drawing.Point(10,40)
$listBox.Size = New-Object System.Drawing.Size(260,20)

A következőképpen adhatja meg, hogy a felhasználók több értéket is kijelölhessenek a listából.

$listBox.SelectionMode = 'MultiExtended'

A következő szakaszban megadhatja, hogy a listamező milyen értékeket jelenítsen meg a felhasználók számára.

[void] $listBox.Items.Add('Item 1')
[void] $listBox.Items.Add('Item 2')
[void] $listBox.Items.Add('Item 3')
[void] $listBox.Items.Add('Item 4')
[void] $listBox.Items.Add('Item 5')

Adja meg a listamező vezérlőelem maximális magasságát.

$listBox.Height = 70

Adja hozzá a listamező vezérlőelemet az űrlaphoz, és arra utasítja a Windowst, hogy nyissa meg az űrlapot más ablakok és párbeszédpanelek tetején, amikor meg van nyitva.

$form.Controls.Add($listBox)
$form.Topmost = $true

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 mit tegyen az űrlappal, miután a felhasználók kiválasztanak egy vagy több lehetőséget a listamezőből, majd kattintson az OK gombra, vagy nyomja le az Enter billentyűt.

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $x = $listBox.SelectedItems
    $x
}

Lásd még