Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a minta csak Windows-platformokra vonatkozik.
A Windows PowerShell 3.0-s és újabb verzióival hozzon létre egy párbeszédpanelt, amely lehetővé teszi a felhasználók számára, hogy elemeket válasszanak ki egy listamező vezérlőelemből.
Listamező vezérlőelem létrehozása és elemek kijelölése belőle
Másolja és illessze be a következőket a Windows PowerShell ISE-be, majd mentse PowerShell-szkriptként (.ps1) fájlként.
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Select a Computer'
$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 select a computer:'
$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.Height = 80
[void] $listBox.Items.Add('atl-dc-001')
[void] $listBox.Items.Add('atl-dc-002')
[void] $listBox.Items.Add('atl-dc-003')
[void] $listBox.Items.Add('atl-dc-004')
[void] $listBox.Items.Add('atl-dc-005')
[void] $listBox.Items.Add('atl-dc-006')
[void] $listBox.Items.Add('atl-dc-007')
$form.Controls.Add($listBox)
$form.Topmost = $true
$result = $form.ShowDialog()
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$x = $listBox.SelectedItem
$x
}
A szkript két .NET-keretrendszerosztály betöltésével kezdődik: System.Drawing és System.Windows.Forms. Ezután elindítja a .NET-keretrendszerosztály új példányát System.Windows.Forms.Form. Ez egy üres űrlapot vagy ablakot biztosít, amelyhez vezérlőket adhat hozzá.
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
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 az előző szkriptben CenterScreen értékre van állítva. Ha nem adja hozzá ezt a tulajdonságot, a Windows kiválaszt egy helyet az űrlap megnyitásakor. Ha a StartingPosition értékét CenterScreenértékre állítja, azzal automatikusan minden betöltéskor az űrlap a képernyő közepén fog megjelenni.
$form.Text = 'Select a Computer'
$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.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)
Hasonlóképpen létrehoz egy Mégse gombot. A Mégse gomb 120 képpont távolságra van az ablak tetejétől, de 150 képpont távolságra van az ablak bal szélétől.
$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. Ebben az esetben azt szeretné, hogy a felhasználók válasszanak ki egy számítógépet.
$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 select a computer:'
$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 listamezők 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)
$listBox.Height = 80
A következő szakaszban megadhatja, hogy a listamező milyen értékeket jelenítsen meg a felhasználók számára.
Megjegyzés
A szkript által létrehozott listamező csak egy kijelölést tesz lehetővé. Ha több kijelölést engedélyező listamező-vezérlőt szeretne létrehozni, adja meg a SelectionMode tulajdonság értékét az alábbihoz hasonlóan: $listBox.SelectionMode = 'MultiExtended' További információ: Többszörös kijelölésű listamezők.
[void] $listBox.Items.Add('atl-dc-001')
[void] $listBox.Items.Add('atl-dc-002')
[void] $listBox.Items.Add('atl-dc-003')
[void] $listBox.Items.Add('atl-dc-004')
[void] $listBox.Items.Add('atl-dc-005')
[void] $listBox.Items.Add('atl-dc-006')
[void] $listBox.Items.Add('atl-dc-007')
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 mi legyen az űrlappal, miután a felhasználók kiválasztanak egy 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.SelectedItem
$x
}